edermartioli / sparc4-pipeline

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

Erro ao tentar reduzir as imagens de ciência para L4 #9

Closed DBernardes closed 1 month ago

DBernardes commented 1 month ago

Neste post, descrevo um erro encontrado durante a redução de dados com o uso do pipeline. Nesta redução, estou utilizando o sistema operacional Windows 11, com a versão 3.12 do Python. De acordo com o Issue #8, foi constatado que existem dependências utilizadas pelo pipeline que não compatíveis com o Windows. Por este motivo, o código está sendo executado utilizando o WSL2, com a versão 24.04 LTS do Ubuntu.

Para esta redução, estou utilizando o script sparc4_mini_pipeline.py disponibilizado no próprio repositório. Devido à alguns problemas, não foi possível rodar este script via linha de comando. Dessa forma, estou configurando as variáveis de entrada diretamente no arquivo, na forma

nightdir = "20240625"
datadir = os.path.join("..", "data")
reducedir = os.path.join("..", "data", "reduced")
channels = "1,2,3,4"
verbose = True
params = os.path.join("user_files", "my_params.yaml")
force = False
target_list = os.path.join("user_files", "targets.csv")
plot = True

Ao rodar o script, o pipeline foi capaz de gerar as imagens de calibração (bias e flat). O erro aconteceu durante a redução das imagens de ciência, mais especificamente, das imagens adquiridas para a lâmina de quarto de onda. Este erro parece acontecer durante a solução de astrometria do pipeline. Apresento abaixo o saída do meu prompt de comando:

Traceback (most recent call last):
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/sparc4_pipeline/sparc4_mini_pipeline.py", line 343, in <module>
    p_polarl4 = s4pipelib.reduce_sci_data(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/sparc4_pipeline/sparc4/pipeline_lib.py", line 992, in reduce_sci_data
    p = stack_and_reduce_sci_images(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/sparc4_pipeline/sparc4/pipeline_lib.py", line 5552, in stack_and_reduce_sci_images
    p = stack_science_images(
        ^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/sparc4_pipeline/sparc4/pipeline_lib.py", line 2205, in stack_science_images
    p = run_register_frames(
        ^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/sparc4_pipeline/sparc4/pipeline_lib.py", line 2797, in run_register_frames
    p, stack_catalogs = build_catalogs(
                        ^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/sparc4_pipeline/sparc4/pipeline_lib.py", line 3796, in build_catalogs
    sources, target_sky_coords, p = add_targets_from_users_file(
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/sparc4_pipeline/sparc4/pipeline_lib.py", line 3562, in add_targets_from_users_file
    targets_pixel_coords = np.array(p["WCS"].world_to_pixel_values(target_sky_coords))
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcsapi/fitswcs.py", line 344, in world_to_pixel_values
    pixel = self.all_world2pix(*world_arrays, 0)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/utils/decorators.py", line 604, in wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 2125, in all_world2pix
    return self._array_converter(
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 1546, in _array_converter
    return _return_single_array(xy, origin)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 1529, in _return_single_array
    result = func(xy, origin)
             ^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 2126, in <lambda>
    lambda *args, **kwargs: self._all_world2pix(
                            ^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 1916, in _all_world2pix
    pix0 = self.wcs_world2pix(world, origin)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 2466, in wcs_world2pix
    return self._array_converter(
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 1546, in _array_converter
    return _return_single_array(xy, origin)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 1529, in _return_single_array
    result = func(xy, origin)
             ^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Denis/Desktop/Ubuntu/sparc4-pipeline-main/env/lib/python3.12/site-packages/astropy/wcs/wcs.py", line 2467, in <lambda>
    lambda xy, o: self.wcs.s2p(xy, o)["pixcrd"], "input", *args, **kwargs
                  ^^^^^^^^^^^^^^^^^^^
TypeError: Cannot cast array data from dtype('<U19') to dtype('float64') according to the rule 'safe'

Pelo que pude constatar, o código parece estar tentando converter os valores de RA de DEC do alvo para as coordenadas x e y do CCD. O erro ocorre ao tentar converter estas coordenadas para uma variável do tipo float. Esta conversão, entretanto, parece não fazer sentido, uma vez que as coordenadas do objeto foram fornecidas no formato HH:MM:SS.ss para RA e DD:MM:SS.ss para DEC.

Dando um print nas coordenadas utilizada como entrada para a função de conversão, obtive a seguinte saída:

[['14:11:46.3227735768', '-33:03:14.373268704'], ['15:38:59.65', '-28:35:36.97'], ['234.74853291666662', '-28.59360361111111'], ['212.94301124999998', '-33.0539925']]

Esta lista apresenta o par de coordenadas fornecido para os dois objetos observados. Além disso, é ainda apresentado um par de coordenadas extra para cada um destes objetos, gerados pelo próprio código. Uma hipótese do que poderia estar acontecendo é o pipeline estar utilizando a formatação errada para os valores de entrada da função de conversão dos valores em RA e DEC para pixels.

DBernardes commented 1 month ago

Descobri o porquê este erro estar acontecendo. Este problema se deve pelo fato de eu ter fornecido as coordenadas no formato sexagesimal (HH:MM:SS.ss e DD:MM:SS.ss) para os objetos alvos contidos no arquivo target.csv. Para corrigir isto, basta apenas fornecer o valor decimal do ângulo correspondente a estas coordenadas.