Hide and Seek ‐ Cosmology Research Group ETH Zurich - lncc-sered/manual-sdumont2nd GitHub Wiki
=EM CONSTRUÇÃO
Hide and Seek desenvolvido pelo grupo de Cosmologia da ETH Zurich, consiste em dois pacotes de software independentes voltados para simulação e análise de dados de levantamentos de rádio com antenas de "prato único".
- HIDE (HI Data Emulator): simula toda a cadeia do sistema de levantamento de rádio, permitindo modelar de forma realista como os dados seriam coletados em observações reais.
- SEEK (Signal Extraction and Emission Kartographer): processa dados simulados (ou observados) de levantamentos de rádio de maneira reprodutível e consistente, facilitando a análise científica dos dados.
Instruções de instalação Oficiais
Página oficial do Hide&Seek ETH-Zurich
Instalação do Hide&Seek via ambiente Conda, localizada em: "/scratch/app/anaconda_module/envs/hide-and-seek-0.1"
e carregada como um módulo do Enviromental Modules com o comando abaixo:
module load hide-and-seek/0.1
HIDE & SEEK carregado com sucesso
Exemplos de uso com dos programas Hide e Seek:
# Execução do comando Hide
hide --strategy-start=2016-03-21-00:00:00 --strategy-end=2016-03-21-01:00:00 --verbose=True hide.config.bleien7m
# Execução do comando Seek
seek --file-prefix=./bgs_example_data --map-name=BGS_maps_test.hdf --verbose=True seek.config.process_survey_ff
Esta seção explica como executar as bibliotecas de teste do Hide and Seek utilizando o framework pytest, amplamente utilizado para testes em Python. (pytest 2.9.2 é uma versão compatível com Python 2.7)
(recomenda-se executar primeiro o exemplo oficial descrito abaixo para validação)
Primeiro crie o diretório de teste "hide-seek-teste". Em seguida, clone a partir do repositório do cosmo-ethz os programas programa Hide e o SEEK. Nele você encontrará a pasta "test". Este diretório contem os arquivos necessários para realização do teste rápido de ambos os programas.
mkdir hide-seek-teste cd hide-seek-teste git clone https://github.com/cosmo-ethz/hide.git git clone https://github.com/cosmo-ethz/seek.gitPós a clonagem entre no diretório de teste de qualquer programa baixado. Aqui vamos utilizar o diretório de teste do programa Hide :
cd hide/testOu se preferir, para sua comodidade disponibilizamos os arquivos de teste dos programas Hide e Seek nos diretórios de instalação. Como alternativa aos comando anteriores, utilize os comandos abaixo:
cp -r /scratch/app/anaconda_module/envs/hide-and-seek-0.1/hide-test .
cp -r /scratch/app/anaconda_module/envs/hide-and-seek-0.1/seek-test .
Arquivos do diretório /hide-test/test
Arquivo | Função |
---|---|
__init__.py
|
Inicializa o pacote de testes, permitindo que seja tratado como um módulo Python. |
test_map_frequency_plugin.py
|
Testa o plugin de mapeamento de frequência, que simula a varredura de frequências pelo telescópio. |
test_map_strategy_plugin.py
|
Avalia estratégias de mapeamento, como varreduras em zigue-zague ou espiral. |
test_M9703_gain.py
|
Verifica a aplicação de ganhos específicos do modelo M9703, utilizado na instrumentação. |
test_noise_gen.py
|
Testa a geração de ruído instrumental e ambiental nos dados simulados. |
test_add_background.py
|
Avalia a adição de sinais de fundo, como emissões galácticas difusas. |
test_pointsources.py
|
Testa a simulação de fontes pontuais, como estrelas ou quasares. |
test_add_rfi.py
|
Verifica a introdução de interferência de radiofrequência (RFI) nos dados simulados. |
test_qu_opt_coord_transform_plugin.py
|
Testa transformações de coordenadas otimizadas para dados de polarização Q e U. |
test_quaternion.py
|
Avalia operações com quaternions, úteis para representar rotações tridimensionais. |
test_apply_gain_plugin.py
|
Testa a aplicação de ganhos instrumentais aos dados simulados. |
test_reduce_frequency_plugin.py
|
Verifica a redução da resolução em frequência dos dados. |
test_astro_signal_plugin.py
|
Testa a simulação de sinais astronômicos específicos. |
test_reduce_signals_plugin.py
|
Avalia a redução ou filtragem de sinais nos dados simulados. |
test_background_noise_plugin.py
|
Testa a adição de ruído de fundo nos dados. |
test_scanning_strategy_plugin.py
|
Verifica diferentes estratégias de varredura do céu pelo telescópio. |
test_beam_providers.py
|
Testa a modelagem do feixe do telescópio, essencial para simular a resposta angular. |
test_scheduler.py
|
Avalia o agendamento de observações, determinando quando e onde o telescópio observa. |
test_scheduler_virtual.py
|
Testa um agendador virtual, possivelmente para simulações sem hardware real. |
test_callisto_gain.py
|
Verifica a aplicação de ganhos específicos do instrumento CALLISTO. |
test_sphere.py
|
Testa operações relacionadas à esfera celeste, como projeções e coordenadas. |
test_cleanup_plugin.py
|
Avalia a limpeza de dados simulados, removendo artefatos ou inconsistências. |
test_static_astro_signal_provider.py
|
Testa a provisão de sinais astronômicos estáticos, que não variam com o tempo. |
test_combine_signals_plugin.py
|
Verifica a combinação de múltiplos sinais simulados em um único conjunto de dados. |
test_static_gsm.py
|
Testa o uso do Modelo Global de Céu (GSM) estático para simular emissões galácticas. |
test_coord_transform_plugin.py
|
Avalia transformações de coordenadas entre diferentes sistemas de referência. |
test_trig_lookup.py
|
Testa tabelas de consulta trigonométricas para acelerar cálculos. |
test_crosshair_strategy.py
|
Verifica a estratégia de varredura em forma de mira (crosshair) pelo telescópio. |
test_write_calibration.py
|
Testa a escrita de dados de calibração nos arquivos de saída. |
test_drift_scan.py
|
Avalia a simulação de varreduras por deriva, onde o telescópio permanece fixo enquanto o céu se move. |
test_write_coords_plugin.py
|
Testa a escrita de coordenadas nos arquivos de saída. |
test_earth_signal_plugin.py
|
Verifica a simulação de sinais provenientes da Terra, como interferências humanas. |
test_write_rfi.py
|
Testa a escrita de dados de interferência de radiofrequência nos arquivos de saída. |
test_full_sky.py
|
Avalia a simulação de observações de todo o céu. |
test_write_tod_fits_plugin.py
|
Testa a escrita de dados simulados no formato FITS, padrão em astronomia. |
test_gsm.py
|
Verifica a integração com o Modelo Global de Céu (GSM) para simular emissões galácticas. |
test_write_tod_phaseswitch_plugin.py
|
Testa a escrita de dados simulados com comutação de fase nos arquivos de saída. |
test_horizon_earth_signal.py
|
Avalia a simulação de sinais da Terra no horizonte do telescópio. |
test_write_tod_plugin.py
|
Testa a escrita de dados simulados (Time-Ordered Data) nos arquivos de saída. |
test_load_beam_profile_plugin.py
|
Verifica o carregamento de perfis de feixe do telescópio para simulações. |
Arquivos do diretório /hide-test/test/res/
Arquivo | Função |
---|---|
HIMap_20150504_175242_02.fit.gz
|
Mapa de intensidade de hidrogênio neutro simulado. |
schedule.txt
|
Arquivo de agendamento de observações para testes. |
Arquivos do diretório /seek-test/test
Arquivo | Função |
---|---|
__init__.py
|
Inicializa o pacote de testes, permitindo que a pasta seja tratada como módulo Python. |
test_astro_sources.py
|
Testa a manipulação e inclusão de fontes astronômicas nos mapas. |
test_background_removal.py
|
Verifica os algoritmos de remoção de fundo dos dados de TOD (Time-Ordered Data). |
test_calibration.py
|
Testa a aplicação de calibração nos dados de TOD. |
test_calibration_transit.py
|
Avalia a calibração por trânsitos de fontes conhecidas. |
test_create_maps.py
|
Testa a geração de mapas a partir de dados de TOD processados. |
test_filter_mapper.py
|
Avalia mapeamento com filtros aplicados aos dados. |
test_filter_variance_mapper.py
|
Testa o mapeamento com variação estatística após aplicação de filtros. |
test_find_nested_files_plugin.py
|
Testa um plugin para localizar arquivos aninhados dentro de diretórios. |
test_fitting.py
|
Avalia algoritmos de ajuste (fitting) de modelos aos dados astronômicos. |
test_healpy_mapper.py
|
Testa o mapeamento de dados usando a biblioteca HEALPix (via healpy). |
test_load_data_plugin.py
|
Verifica a funcionalidade de carregamento de dados via plugin. |
test_make_maps.py
|
Testa a criação de mapas a partir de dados simulados ou reais. |
test_map_file_paths_plugin.py
|
Avalia o gerenciamento de caminhos de arquivos de mapas. |
test_map_indicies.py
|
Testa a indexação de pixels em mapas (geralmente HEALPix). |
test_mask_artefacts.py
|
Verifica a aplicação de máscaras para remoção de artefatos em mapas. |
test_mask_objects.py
|
Testa a criação de máscaras para objetos específicos nos mapas. |
test_minimal.py
|
Teste mínimo para verificar se o pipeline principal funciona com o mínimo de dados. |
test_pre_process_tod.py
|
Testa o pré-processamento dos dados temporais (TOD). |
test_process_coords.py
|
Verifica o processamento das coordenadas associadas aos dados. |
test_process_survey.py
|
Testa o processamento de dados de uma campanha de observações (survey). |
test_reduce_map_indicies.py
|
Avalia a redução ou compressão da indexação dos mapas. |
test_reduce_maps_plugin.py
|
Testa a redução de mapas completos por meio de plugins (ex: rebinning). |
test_remove_rfi.py
|
Verifica a remoção de interferência de radiofrequência dos dados. |
test_restructure_tod.py
|
Testa a reestruturação ou reagrupamento dos dados TOD. |
test_simple_mapper.py
|
Teste de um mapeador simples para validações rápidas. |
test_simple_variance_mapper.py
|
Testa um mapeador simples que também calcula variância por pixel. |
test_sum_threshold.py
|
Avalia algoritmos de detecção baseados em limiar de soma dos dados. |
test_tod_utils.py
|
Testa funções utilitárias para manipular dados de TOD. |
test_write_maps.py
|
Testa a escrita de mapas processados em arquivos de saída. |
Arquivos do diretório /hide-test/test/res
Arquivo/Dir | Função |
---|---|
coords/
|
Diretório contendo dados de coordenadas usados nos testes. |
data/
|
Conjunto de dados de exemplo utilizados pelos testes automatizados. |
simple_tod.hdf
|
Arquivo HDF5 contendo dados de TOD simulados simples, usado em testes básicos. |
skymap/
|
Diretório contendo mapas celestes gerados ou usados como referência durante os testes. |
De posso dos arquivos de teste, execute o comando "pytest" para realizar os teste com cada um dos arquivos listados nas tabelas acima. Utilize o comando abaixo seguido do diretório de teste de cada uma dos programas. No exemplo abaixo utilizamos os teste do programa Hide:
pytest hide-testO comando acima irá retornar a seguinte resposta no terminal abaixo:
rafaelfs@sdumont2nd5 hide-test$ pytest test
========================================== test session starts ==========================================
platform linux2 -- Python 2.7.15, pytest-4.6.11, py-1.11.0, pluggy-0.13.1
rootdir: /home/rafalfs/downloads/hide-and-seek/hide
collected 56 items
test/test_M9703_gain.py . [ 1%]
test/test_add_background.py . [ 3%]
test/test_add_rfi.py . [ 5%]
test/test_add_rfi_phaseswitch.py .. [ 8%]
test/test_apply_gain_plugin.py . [ 10%]
test/test_astro_signal_plugin.py . [ 12%]
test/test_background_noise_plugin.py . [ 14%]
test/test_beam_providers.py ..... [ 23%]
test/test_bleien7m.py . [ 25%]
test/test_callisto_gain.py . [ 26%]
test/test_cleanup_plugin.py . [ 28%]
test/test_combine_signals_plugin.py . [ 30%]
test/test_coord_transform_plugin.py . [ 32%]
test/test_crosshair_strategy.py . [ 33%]
test/test_drift_scan.py . [ 35%]
test/test_earth_signal_plugin.py . [ 37%]
test/test_full_sky.py . [ 39%]
test/test_gsm.py .... [ 46%]
test/test_horizon_earth_signal.py . [ 48%]
test/test_load_beam_profile_plugin.py . [ 50%]
test/test_map_frequency_plugin.py . [ 51%]
test/test_map_strategy_plugin.py . [ 53%]
test/test_noise_gen.py . [ 55%]
test/test_pointsources.py . [ 57%]
test/test_qu_opt_coord_transform_plugin.py . [ 58%]
test/test_quaternion.py .... [ 66%]
test/test_reduce_frequency_plugin.py s [ 67%]
test/test_reduce_signals_plugin.py . [ 69%]
test/test_scanning_strategy_plugin.py . [ 71%]
test/test_scheduler.py . [ 73%]
test/test_scheduler_virtual.py . [ 75%]
test/test_sphere.py . [ 76%]
test/test_static_astro_signal_provider.py . [ 78%]
test/test_static_gsm.py .. [ 82%]
test/test_trig_lookup.py .... [ 89%]
test/test_write_calibration.py . [ 91%]
test/test_write_coords_plugin.py . [ 92%]
test/test_write_rfi.py . [ 94%]
test/test_write_tod_fits_plugin.py s [ 96%]
test/test_write_tod_phaseswitch_plugin.py . [ 98%]
test/test_write_tod_plugin.py . [100%]
=========================================== warnings summary ============================================
test/test_add_rfi.py::TestAddRFIPlugin::test_add_rfi
/home/rafalfs/downloads/hide-and-seek/hide/hide/plugins/add_rfi.py:60: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
self.ctx.tod_vx[pos_freq: pos_freq + Z.shape[0], pos_time: pos_time + Z.shape[1]] += Z
-- Docs: https://docs.pytest.org/en/latest/warnings.html
========================== 54 passed, 2 skipped, 18 warnings in 45.35 seconds ===========================
Arquivo de Teste | Descrição do Plugin/Módulo Testado | Status |
---|---|---|
test_M9703_gain.py | Testa o ganho para o sistema M9703 | ✔️ Passou |
test_add_background.py | Adiciona ruído de fundo simulado ao sinal | ✔️ Passou |
test_add_rfi.py | Injeta interferência de rádio frequência (RFI) no TOD | ✔️ Passou |
test_add_rfi_phaseswitch.py | Injeta RFI com comutação de fase | ✔️✔️ Passou (2 testes) |
test_apply_gain_plugin.py | Aplica curva de ganho ao TOD | ✔️ Passou |
test_astro_signal_plugin.py | Injeta sinais astrofísicos no TOD | ✔️ Passou |
test_background_noise_plugin.py | Gera ruído de fundo aleatório | ✔️ Passou |
test_beam_providers.py | Testa modelos de feixe utilizados nas simulações | ✔️✔️✔️✔️✔️ Passou (5 testes) |
test_bleien7m.py | Testa simulação de observação do telescópio Bleien 7m | ✔️ Passou |
test_callisto_gain.py | Aplica ganho baseado em dados do projeto Callisto | ✔️ Passou |
test_cleanup_plugin.py | Limpa dados intermediários do pipeline | ✔️ Passou |
test_combine_signals_plugin.py | Combina múltiplos sinais no TOD | ✔️ Passou |
test_coord_transform_plugin.py | Transforma coordenadas celestes e locais | ✔️ Passou |
test_crosshair_strategy.py | Testa estratégia de observação em forma de cruz | ✔️ Passou |
test_drift_scan.py | Testa observação tipo drift-scan | ✔️ Passou |
test_earth_signal_plugin.py | Injeta sinais da Terra no TOD | ✔️ Passou |
test_full_sky.py | Testa mapeamento do céu completo | ✔️ Passou |
test_gsm.py | Gera céu simulado com base no modelo GSM | ✔️✔️✔️✔️ Passou (4 testes) |
test_horizon_earth_signal.py | Testa sinal da Terra no horizonte | ✔️ Passou |
test_load_beam_profile_plugin.py | Carrega perfis de feixe de antena | ✔️ Passou |
test_map_frequency_plugin.py | Mapeia frequências para canais do TOD | ✔️ Passou |
test_map_strategy_plugin.py | Aplica estratégias de mapeamento ao TOD | ✔️ Passou |
test_noise_gen.py | Gera ruído sintético genérico | ✔️ Passou |
test_pointsources.py | Injeta fontes pontuais no TOD | ✔️ Passou |
test_qu_opt_coord_transform_plugin.py | Testa transformação coordenada otimizada para QU | ✔️ Passou |
test_quaternion.py | Testa rotinas de quaternions para rotação celeste | ✔️✔️✔️✔️ Passou (4 testes) |
test_reduce_frequency_plugin.py | Reduz resolução em frequência | ⏭️ Ignorado |
test_reduce_signals_plugin.py | Reduz resolução temporal dos sinais | ✔️ Passou |
test_scanning_strategy_plugin.py | Aplica estratégias de escaneamento | ✔️ Passou |
test_scheduler.py | Testa agendador de observações | ✔️ Passou |
test_scheduler_virtual.py | Testa agendamento com telescópio virtual | ✔️ Passou |
test_sphere.py | Testa representações esféricas do céu | ✔️ Passou |
test_static_astro_signal_provider.py | Injeta sinal astrofísico estático | ✔️ Passou |
test_static_gsm.py | Usa versão estática do modelo GSM | ✔️✔️ Passou (2 testes) |
test_trig_lookup.py | Usa tabelas de senos/cossenos para eficiência | ✔️✔️✔️✔️ Passou (4 testes) |
test_write_calibration.py | Escreve dados de calibração em arquivos | ✔️ Passou |
test_write_coords_plugin.py | Escreve coordenadas simuladas | ✔️ Passou |
test_write_rfi.py | Escreve sinais de RFI injetados | ✔️ Passou |
test_write_tod_fits_plugin.py | Escreve TOD em formato FITS | ⏭️ Ignorado |
test_write_tod_phaseswitch_plugin.py | Escreve TOD com chaveamento de fase | ✔️ Passou |
test_write_tod_plugin.py | Escreve TOD final no disco | ✔️ Passou |
O teste automatizado do pacote HIDE com o pytest, que avaliou os módulos e plugins disponíveis no diretório hide-test. O resultado mostrou que:
- 56 testes foram coletados no total.
- 54 testes passaram com sucesso (.)
- 2 testes foram pulados (s)
- 18 avisos (warnings) foram gerados, geralmente por uso de funcionalidades antigas (deprecated), especialmente do NumPy.
#!/bin/bash
#SBATCH --nodes=1 ### Solicita 1 nó de computação
#SBATCH --ntasks-per-node=1 ### 1 tarefa por nó (não é necessário paralelismo para rodar testes unitários)
#SBATCH --ntasks=1 ### Total de 1 tarefa
#SBATCH -p lncc-h100_dev ### Especifica a partição (fila) do cluster. Use a apropriada para o seu ambiente.
#SBATCH -J hide-testes ### Nome do job será "hide-testes"
#SBATCH -o hide_output.log ### Arquivo de saída padrão (stdout)
#SBATCH -e hide_erros.log ### Arquivo de erro padrão (stderr)
### A partir daqui começa o ambiente de execução
cd $SLURM_SUBMIT_DIR ### Garante que o script será executado a partir do diretório onde foi submetido
### Carrega o módulo com a instalação do HIDE&SEEK
module load hide-and-seek/0.1
### Executa os testes com pytest
### O diretório "test" contém os arquivos test_*.py que serão executados automaticamente
### A opção -v mostra a saída em modo "verbose" (mais informativo)
pytest -v test/
### Se quiser salvar um relatório em formato JUnit XML para uso em CI/CD, adicione:
# pytest -v test/ --junitxml=relatorio-hide.xml
### Ou executes os comando basicos necessários para seus trabalhos como no exemplo abaixo:
# Execução do comando Hide
srun hide --strategy-start=2016-03-21-00:00:00 --strategy-end=2016-03-21-01:00:00 --verbose=True hide.config.bleien7m
# Execução do comando Seek
srun seek --file-prefix=./bgs_example_data --map-name=BGS_maps_test.hdf --verbose=True seek.config.process_survey_ff
Com o módulo carregado, acesse ajuda com o comando abaixo:
module help hide-and-seek
---------------------------- Module Specific Help for "hide-and-seek/0.1" -----------------------------
HIDE & SEEK - Simulacao e analise de levantamentos de radio
Configura o ambiente para o HIDE & SEEK instalado via Conda e carregado com um Enviromental Modu
le
Caminho dos binarios: /scratch/app/anaconda_module/envs/hide-and-seek-0.1/bin
Uso basico:
1. Prepare seus scripts Python para rodar HIDE e SEEK
2. Execute os comandos hide ou seek conforme a documentacao
Exemplo de execucao:
hide --config config_hide.yaml
seek --input data_seek.fits --output results.fits
Documentacao oficial e exemplos:
https://cosmology.ethz.ch/research/software-lab/hide---seek.html
Ou utilize arquivos brutos para analise como no exemplo
# Execucao do comando Hide
hide --strategy-start=2016-03-21-00:00:00 --strategy-end=2016-03-21-01:00:00 --verbose=True hide.config.
bleien7m
# Execucao do comando Seek
seek --file-prefix=./bgs_example_data --map-name=BGS_maps_test.hdf --verbose=True seek.config.process_s
urvey_ff
Documentacao oficial deste exemplos:
https://hide.readthedocs.io/en/latest/usage.html
https://seek.readthedocs.io/en/latest/usage.html