edermartioli / sparc4-pipeline

SPARC4 Pipeline is a set of tools to reduce SPARC4 observations.
GNU General Public License v3.0
5 stars 3 forks source link

Executando o pipeline localmente #8

Closed DBernardes closed 2 months ago

DBernardes commented 2 months ago

Nesta nota, descrevo as dificuldades que encontrei ao tentar executar o pipeline da SPARC4 localmente para a redução de um conjunto de imagens de exemplo, segundo o passo-a-passo apresentado neste documento. Para tanto, estou utilizando um sistema operacional Windows 11 e Python versão 3.12. As seções a seguir estão organizadas de acordo com os principais problemas encontrados desde o processo de instalação do pipeline até a execução do código em si.

Instalando o pipeline

Durante o processo de instalação do pipeline, dois problemas puderam ser identificados. No primeiro deles, não conseguir realizar a instalação das dependências descritas no arquivo .toml do projeto. Aparentemente, existem algumas bibliotecas que são incompatíveis com o sistema Windows. Para solucionar este problema, precisei realizar a instalação do pacote Windows Subsystem for Linux 2 (WSL2), junto da versão do Ubuntu 24.04 LTS.

Feito isso, segui com o procedimento de instalação, executando o comando pip install -U ., segundo apresentado no manual. Neste momento, um segundo problema pôde identificado. O pacote twirl não é compatível com as versão mais atual dos pacotes astropy e scipy, os quais estão associados à versão 3.12 do Python. Para solucionar este problema, foi preciso instalar cada dependência individualmente, de modo que o próprio gerenciador de instalação do Python faz o downgrade forçado destas duas bibliotecas, completando a etapa de instalação do pipeline.

Executando o script sparc4_mini_pipeline.py

Segundo o manual, o script sparc4_mini_pipeline.py é o responsável pela redução de dados. Seguindo o procedimento apresentado, deve-se executar o comando python -W ignore sparc4_mini_pipeline.py --nightdir=20230604 –pv. Contudo, ao executar este comando, é gerado um erro relacionado ao caminho utilizado para a importação de diferentes arquivos .py utilizados pelo script. Aparentemente, o script está tentando fazer o import de um arquivo salvo em um diretório diferente e, por isso, não consegue encontrá-lo. Existem diversas formas de corrigir este problema. Talvez a mais simples seria incluir os arquivos .py importados pelo script no arquivo __init__.py do diretório sparc4 e copiar o script para o diretório raiz do pipeline. Feito isso, o pipeline deve funcionar com os dados de exemplo.

DBernardes commented 2 months ago

Dando prosseguimento ao processo de redução dos dados de exemplo apresentados no manual, alguns problemas adicionais foram encontrados. Estes problemas são descritos a seguir:

Executando o pipeline via linha de comando

O comando apresentado a seguir foi executado para realizar a redução dos dados de exemplo fornecidos via linha de comando:

python -W ignore sparc4_mini_pipeline.py --nightdir="20230604" –-params="user_files/my_params.yaml" --target_list="user_files/targets.csv" -pv

Contudo, pela informação de log apresentada na tela do prompt de comando, pode-se constatar que o pipeline não estava encontrando o caminho especificado para o diretório de dados. Ao tentar realizar um print dos argumentos passados para o script sparc4_mini_pipeline.py, pude recuperar os valores do diretório da noite e da lista de alvos. Contudo, por alguma razão, o valor do argumento --params sempre retornava vazio, dando a entender que o arquivo de configuração fornecido não estava sendo utilizado. Por este motivo, este método de redução não foi mais utilizado.

Executando os jupyter notebooks

Como alternativa à versão via linha de comando, é disponibilizado um arquivo .ipynb com uma redução passo-a-passo dos dados fornecidos. Utilizando o arquivo da redução fotométrica, foi possível obter a curva de luz do objeto. Contudo, utilizando o arquivo para a redução polarimétrica, ocorreu um erro ao tentar reduzir os frames de ciência individuais. Mais especificamente, o código não encontrou uma keyword relacionada ao flat da posição de lâmina 01 (KeyError: 'wppos01_master_flat'). Infelizmente, isto impediu de executar o restante da redução.

DBernardes commented 2 months ago

Depurando o pipeline, pude entender o motivo do erro relacionado à keyword wppos01_master_flat estar acontecendo no notebook de polarimetria. Aparentemente, o código estava tentando gerar uma imagem master flat para cada lâmina utilizada durante a observação. Contudo, inspecionando os dados de entrada, foi possível notar que apenas as imagens de flat para a primeira posição de lâmina foram fornecidas. Para corrigir este problema, foi necessário configurar o valor da variável APPLY_FLAT_PER_WPPOS para FALSE na célula de inicialização do notebook de redução. Feito isso, foi possível realizar a redução completa, tanto para o caso da lâmina de meia onda, quanto para o caso de quarto de onda.

DBernardes commented 2 months ago

Neste post, apresento uma síntese sobre o processo de redução de dados, rodando o pipeline localmente.

Inicialmente, tentei realizar esta redução de dados através dos notebooks de exemplo presentes no repositório. Contudo, este procedimento gerava um erro de excesso de memória ao tentar gerar a imagem da combinação de 300 imagens de bias. Isto provavelmente aconteceu pelo fato do número de imagens utilizadas ser maior do que aquele suportado pelo kernel do notebook. A solução para isso foi fazer a redução através do script sparc4_mini_pipeline.py.

Ao tentar executar o script sparc4_mini_pipeline.py, dois problemas foram encontrados. Um deles está relacionado com os parâmetros fornecidos para o pipeline, ao executá-lo via linha de comando, como descrito neste comentário. A solução para isto foi fornecer os parâmetros para o pipeline diretamente dentro do arquivo .py. O segundo problema está relacionado com a variável targe_list. Esta variável armazena uma string com o caminho para o arquivo .csv contendo as coordenadas dos objetos observados. Por algum motivo, o Python parecia não reconhecer esta variável como uma string, gerando erro durante e execução. A solução para isso foi sobrescrever o valor desta variável no ponto onde o código estava quebrando pela string com o caminho desejado. Estes problemas não foram totalmente entendidos, mas devem estar relacionados com o uso do sistema operacional Windows com o WSL. Felizmente, ao implementar este procedimento, pude realizar a redução de dados, tanto para fotometria, quanto para polarimetria.