ratt-ru / QuartiCal

CubiCal, but with greater power.
MIT License
8 stars 4 forks source link

Stimelation branch error: Incompatible value 'None' for field of type 'str' #205

Closed Kincaidr closed 1 year ago

Kincaidr commented 1 year ago

This error only occurs on the stimelation branch.

Kincaidr commented 1 year ago
# running /home/kincaid/stimela_venv/bin/goquartical input_ms.path=Abell3376_bda_0.84.ms input_ms.data_column=DATA 
input_ms.weight_column=WEIGHT_SPECTRUM input_ms.time_chunk=0 input_ms.freq_chunk=0 input_ms.is_bda=True               
input_ms.group_by=['SCAN_NUMBER', 'FIELD_ID', 'DATA_DESC_ID'] input_ms.select_fields=[] input_ms.select_ddids=[]      
input_ms.select_uv_range=[0.0, 0.0] input_model.recipe=MODEL_DATA input_model.beam_l_axis=X input_model.beam_m_axis=Y 
input_model.invert_uvw=True input_model.source_chunks=500 input_model.apply_p_jones=True                              
output.gain_directory=gains.qc output.log_directory=logs.qc output.overwrite=True output.products=['corrected_data']  
output.columns=['SELFCAL_DATA'] output.flags=True output.apply_p_jones_inv=True mad_flags.enable=False                
mad_flags.threshold_bl=5.0 mad_flags.threshold_global=5.0 mad_flags.max_deviation=5.0 solver.terms=['K']              
solver.iter_recipe=[100] solver.propagate_flags=True solver.robust=False solver.reweighting_flag_threshold=0.0        
solver.threads=1 solver.convergence_fraction=0.99 solver.convergence_criteria=1e-06 solver.reference_antenna=0        
dask.workers=1 dask.scheduler=threads K.type=delay K.solve_per=antenna K.direction_dependent=False K.time_interval=4  
K.freq_interval=0 K.interp_mode=reim K.interp_method=2dlinear K.respect_scan_boundaries=True                          
K.initial_estimate=False                                                                                           
# 2022-10-10 15:57:20.931 | ERROR    | __main__:<module>:11 - An error has been caught in function '<module>',    
process 'MainProcess' (3404434), thread 'MainThread' (140370668070720):                                            
# Traceback (most recent call last):                                                                           
#                                                                                                              
# > File "/home/kincaid/stimela_venv/bin/goquartical", line 11, in <module>                                    
#     load_entry_point('quartical', 'console_scripts', 'goquartical')()                                        
#     └ <function load_entry_point at 0x7faa975c9a60>                                                          
#                                                                                                              
#   File "/vault-ike/kincaid/Software/QuartiCal/quartical/executor.py", line 32, in execute                    
#     _execute(stack)                                                                                          
#     │        └ <contextlib.ExitStack object at 0x7faa97364580>                                               
#     └ <function _execute at 0x7fa9f5496940>                                                                  
#                                                                                                              
#   File "/vault-ike/kincaid/Software/QuartiCal/quartical/executor.py", line 41, in _execute                   
#     opts = parser.parse_inputs()                                                                             
#            │      └ <function parse_inputs at 0x7fa9fd05d820>                                                
#            └ <module 'quartical.config.parser' from                                                             
'/vault-ike/kincaid/Software/QuartiCal/quartical/config/parser.py'>                                                
#                                                                                                              
#   File "/vault-ike/kincaid/Software/QuartiCal/quartical/config/parser.py", line 121, in parse_inputs         
#     config = oc.structured(FinalConfig)                                                                      
#              │  │          └ <class 'types.FinalConfig'>                                                     
#              │  └ <staticmethod object at 0x7faa4e667c40>                                                    
#              └ <class 'omegaconf.omegaconf.OmegaConf'>                                                       
#                                                                                                              
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/omegaconf.py", line 123, in            
structured                                                                                                         
#     return OmegaConf.create(obj, parent, flags)                                                              
#            │         │      │    │       └ None                                                              
#            │         │      │    └ None                                                                      
#            │         │      └ <class 'types.FinalConfig'>                                                    
#            │         └ <staticmethod object at 0x7faa4e667d00>                                               
#            └ <class 'omegaconf.omegaconf.OmegaConf'>                                                         
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/omegaconf.py", line 176, in create  
#     return OmegaConf._create_impl(                                                                           
#            │         └ <staticmethod object at 0x7faa4e5f5580>                                               
#            └ <class 'omegaconf.omegaconf.OmegaConf'>                                                         
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/omegaconf.py", line 885, in            
_create_impl                                                                                                       
#     format_and_raise(node=None, key=None, value=None, msg=str(e), cause=e)                                   
#     └ <function format_and_raise at 0x7faa4e698160>                                                          
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 820, in               
format_and_raise                                                                                                   
#     _raise(ex, cause)                                                                                        
#     │      │   └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n       
object_type=BaseConfig_input_ms")                                                                                  
#     │      └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n           
object_type=BaseConfig_input_ms")                                                                                  
#     └ <function _raise at 0x7faa4e6980d0>                                                                    
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 798, in _raise     
#     raise ex.with_traceback(sys.exc_info()[2])  # set env var OC_CAUSE=1 for full trace                      
#           │  │              │   └ <built-in function exc_info>                                               
#           │  │              └ <module 'sys' (built-in)>                                                      
#           │  └ <method 'with_traceback' of 'BaseException' objects>                                          
#           └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n            
object_type=BaseConfig_input_ms")                                                                                  
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/omegaconf.py", line 846, in            
_create_impl                                                                                                       
#     return DictConfig(                                                                                       
#            └ <class 'omegaconf.dictconfig.DictConfig'>                                                       
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 111, in           
__init__                                                                                                           
#     format_and_raise(node=None, key=key, value=None, cause=ex, msg=str(ex))                                  
#     │                               └ None                                                                   
#     └ <function format_and_raise at 0x7faa4e698160>                                                          
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 820, in               
format_and_raise                                                                                                   
#     _raise(ex, cause)                                                                                        
#     │      │   └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n       
object_type=BaseConfig_input_ms")                                                                                  
#     │      └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n           
object_type=BaseConfig_input_ms")                                                                                  
#     └ <function _raise at 0x7faa4e6980d0>                                                                    
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 798, in _raise     
#     raise ex.with_traceback(sys.exc_info()[2])  # set env var OC_CAUSE=1 for full trace                      
#           │  │              │   └ <built-in function exc_info>                                               
#           │  │              └ <module 'sys' (built-in)>                                                      
#           │  └ <method 'with_traceback' of 'BaseException' objects>                                          
#           └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n            
object_type=BaseConfig_input_ms")                                                                                  
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 94, in __init__
#     self._set_value(content, flags=flags)                                                                    
#     │    │          │              └ None                                                                    
#     │    │          └ <class 'types.FinalConfig'>                                                            
#     │    └ <function DictConfig._set_value at 0x7faa4e652ca0>                                                
#     └ None                                                                                                   
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 647, in           
_set_value                                                                                                         
#     raise e                                                                                                  
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 644, in           
_set_value                                                                                                         
#     self._set_value_impl(value, flags)                                                                       
#     │    │               │      └ None                                                                       
#     │    │               └ <class 'types.FinalConfig'>                                                       
#     │    └ <function DictConfig._set_value_impl at 0x7faa4e652d30>                                           
#     └ None                                                                                                   
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 674, in           
_set_value_impl                                                                                                    
#     data = get_structured_config_data(value, allow_objects=ao)                                               
#            │                          │                    └ None                                            
#            │                          └ <class 'types.FinalConfig'>                                          
#            └ <function get_structured_config_data at 0x7faa4e695160>                                         
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 494, in               
get_structured_config_data                                                                                         
#     return get_dataclass_data(obj, allow_objects=allow_objects)                                              
#            │                  │                  └ None                                                      
#            │                  └ <class 'types.FinalConfig'>                                                  
#            └ <function get_dataclass_data at 0x7faa4e68fc10>                                                 
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 422, in               
get_dataclass_data                                                                                                 
#     format_and_raise(                                                                                        
#     └ <function format_and_raise at 0x7faa4e698160>                                                          
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 820, in               
format_and_raise                                                                                                   
#     _raise(ex, cause)                                                                                        
#     │      │   └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n       
object_type=BaseConfig_input_ms")                                                                                  
#     │      └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n           
object_type=BaseConfig_input_ms")                                                                                  
#     └ <function _raise at 0x7faa4e6980d0>                                                                    
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 798, in _raise     
#     raise ex.with_traceback(sys.exc_info()[2])  # set env var OC_CAUSE=1 for full trace                      
#           │  │              │   └ <built-in function exc_info>                                               
#           │  │              └ <module 'sys' (built-in)>                                                      
#           │  └ <method 'with_traceback' of 'BaseException' objects>                                          
#           └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n            
object_type=BaseConfig_input_ms")                                                                                  
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 414, in               
get_dataclass_data                                                                                                 
#     d[name] = _maybe_wrap(                                                                                   
#     │ │       └ <function _maybe_wrap at 0x7faa4e5ff310>                                                     
#     │ └ 'input_ms'                                                                                           
#     └ {}                                                                                                     
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/omegaconf.py", line 1090, in           
_maybe_wrap                                                                                                        
#     return _node_wrap(                                                                                       
#            └ <function _node_wrap at 0x7faa4e5ff280>                                                         
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/omegaconf.py", line 1012, in           
_node_wrap                                                                                                         
#     node = DictConfig(                                                                                       
#            └ <class 'omegaconf.dictconfig.DictConfig'>                                                       
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 111, in           
__init__                                                                                                           
#     format_and_raise(node=None, key=key, value=None, cause=ex, msg=str(ex))                                  
#     │                               └ 'input_ms'                                                             
#     └ <function format_and_raise at 0x7faa4e698160>                                                          
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 820, in               
format_and_raise                                                                                                   
#     _raise(ex, cause)                                                                                        
#     │      │   └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n       
object_type=BaseConfig_input_ms")                                                                                  
#     │      └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n           
object_type=BaseConfig_input_ms")                                                                                  
#     └ <function _raise at 0x7faa4e6980d0>                                                                    
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 798, in _raise     
#     raise ex.with_traceback(sys.exc_info()[2])  # set env var OC_CAUSE=1 for full trace                      
#           │  │              │   └ <built-in function exc_info>                                               
#           │  │              └ <module 'sys' (built-in)>                                                      
#           │  └ <method 'with_traceback' of 'BaseException' objects>                                          
#           └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n            
object_type=BaseConfig_input_ms")                                                                                  
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 94, in __init__
#     self._set_value(content, flags=flags)                                                                    
#     │    │          │              └ None                                                                    
#     │    │          └ BaseConfig_input_ms(path=None, data_column='DATA', sigma_column=None, weight_column=None, 
time_chunk=0, freq_chunk=0, is_bda=...                                                                             
#     │    └ <function DictConfig._set_value at 0x7faa4e652ca0>                                                
#     └ None                                                                                                   
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 647, in           
_set_value                                                                                                         
#     raise e                                                                                                  
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 644, in           
_set_value                                                                                                         
#     self._set_value_impl(value, flags)                                                                       
#     │    │               │      └ None                                                                       
#     │    │               └ BaseConfig_input_ms(path=None, data_column='DATA', sigma_column=None,                
weight_column=None, time_chunk=0, freq_chunk=0, is_bda=...                                                         
#     │    └ <function DictConfig._set_value_impl at 0x7faa4e652d30>                                           
#     └ None                                                                                                   
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/dictconfig.py", line 674, in           
_set_value_impl                                                                                                    
#     data = get_structured_config_data(value, allow_objects=ao)                                               
#            │                          │                    └ None                                            
#            │                          └ BaseConfig_input_ms(path=None, data_column='DATA', sigma_column=None,   
weight_column=None, time_chunk=0, freq_chunk=0, is_bda=...                                                         
#            └ <function get_structured_config_data at 0x7faa4e695160>                                         
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 494, in               
get_structured_config_data                                                                                         
#     return get_dataclass_data(obj, allow_objects=allow_objects)                                              
#            │                  │                  └ None                                                      
#            │                  └ BaseConfig_input_ms(path=None, data_column='DATA', sigma_column=None,           
weight_column=None, time_chunk=0, freq_chunk=0, is_bda=...                                                         
#            └ <function get_dataclass_data at 0x7faa4e68fc10>                                                 
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 422, in               
get_dataclass_data                                                                                                 
#     format_and_raise(                                                                                        
#     └ <function format_and_raise at 0x7faa4e698160>                                                          
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 900, in               
format_and_raise                                                                                                   
#     _raise(ex, cause)                                                                                        
#     │      │   └ ValidationError("Incompatible value 'None' for field of type 'str'")                        
#     │      └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n           
object_type=BaseConfig_input_ms")                                                                                  
#     └ <function _raise at 0x7faa4e6980d0>                                                                    
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 798, in _raise     
#     raise ex.with_traceback(sys.exc_info()[2])  # set env var OC_CAUSE=1 for full trace                      
#           │  │              │   └ <built-in function exc_info>                                               
#           │  │              └ <module 'sys' (built-in)>                                                      
#           │  └ <method 'with_traceback' of 'BaseException' objects>                                          
#           └ ValidationError("Incompatible value 'None' for field of type 'str'\n    full_key: path\n            
object_type=BaseConfig_input_ms")                                                                                  
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/_utils.py", line 414, in               
get_dataclass_data                                                                                                 
#     d[name] = _maybe_wrap(                                                                                   
#     │ │       └ <function _maybe_wrap at 0x7faa4e5ff310>                                                     
#     │ └ 'path'                                                                                               
#     └ {}                                                                                                     
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/omegaconf.py", line 1090, in           
_maybe_wrap                                                                                                        
#     return _node_wrap(                                                                                       
#            └ <function _node_wrap at 0x7faa4e5ff280>                                                         
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/omegaconf.py", line 1046, in           
_node_wrap                                                                                                         
#     node = StringNode(value=value, key=key, parent=parent, is_optional=is_optional)                          
#            │                │          │           │                   └ False                               
#            │                │          │           └ {}                                                      
#            │                │          └ 'path'                                                              
#            │                └ None                                                                           
#            └ <class 'omegaconf.nodes.StringNode'>                                                            
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/nodes.py", line 174, in __init__    
#     super().__init__(                                                                                        
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/nodes.py", line 29, in __init__     
#     self._set_value(value)  # lgtm [py/init-calls-subclass]                                                  
#     │    │          └ None                                                                                   
#     │    └ <function ValueNode._set_value at 0x7faa4e646280>                                                 
#     └ __INVALID__                                                                                            
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/nodes.py", line 46, in _set_value   
#     self._val = self.validate_and_convert(value)                                                             
#     │           │    │                    └ None                                                             
#     │           │    └ <function ValueNode.validate_and_convert at 0x7faa4e6463a0>                           
#     │           └ __INVALID__                                                                                
#     └ __INVALID__                                                                                            
#   File "/home/kincaid/stimela_venv/lib/python3.8/site-packages/omegaconf/nodes.py", line 66, in                 
validate_and_convert                                                                                               
#     raise ValidationError(                                                                                   
#           └ <class 'omegaconf.errors.ValidationError'>                                                       
#                                                                                                              
# omegaconf.errors.ValidationError: Incompatible value 'None' for field of type 'str'                          
#     full_key: path                                                                                           
#     object_type=BaseConfig_input_ms                                                                          
2022-10-10 15:57:21 STIMELA.boom.quartical_1 INFO: /home/kincaid/stimela_venv/bin/goquartical exited with code 1 after
0:00:03                                                                                                               
2022-10-10 15:57:21 STIMELA.boom.quartical_1 ERROR: /home/kincaid/stimela_venv/bin/goquartical returned non-zero  
exit status 1                                                                                                      
/home/kincaid/stimela_venv/bin/goquartical returned non-zero exit status 1
/home/kincaid/stimela_venv/bin/goquartical returned non-zero exit status 1
2022-10-10 15:57:21 STIMELA ERROR: run failed after 0:00:03: /home/kincaid/stimela_venv/bin/goquartical returned  
non-zero exit status 1                                                                                             
run failed after 0:00:03
/home/kincaid/stimela_venv/bin/goquartical returned non-zero exit status 1
landmanbester commented 1 year ago

Not sure where the branch confusion comes from but I think I have seen your latest error before. It is related to how empty lists get parsed. Can you try to leave out the empty lists instead of passing input_ms.select_fields=[] input_ms.select_ddids=[] explicitly?

Kincaidr commented 1 year ago

Can you try to leave out the empty lists instead of passing input_ms.select_fields=[] input_ms.select_ddids=[] explicitly?

Yes, I have already tried this. Still same error.

Kincaidr commented 1 year ago

Not sure where the branch confusion comes from

Recently I have been getting unusual quartical errors that I did not get before. I am aware that the stimela2 kube branch is giving me problems so I am thinking it could be this. However, this latest error I still get even when running outside stimela.

JSKenyon commented 1 year ago

I want to ask why when installing quartical my Stimela2 branch gets changed.

@Kincaidr The reason for this is that the stimelation branch of QuartiCal is installing a specific branch of stimela. So if you have Stimela (let's say main) already installed in you environment, QuartiCal will install the kube branch over it. You should be able to fix this by simply doing pip uninstall stimela after installing QuartiCal, and then installing whichever version of stimela you want (although bear in mind QuartiCal may not work with all branches of stimela which is I suspect the reason for your other errors).

JSKenyon commented 1 year ago

Not sure where the branch confusion comes from

Recently I have been getting unusual quartical errors that I did not get before. I am aware that the stimela2 kube branch is giving me problems so I am thinking it could be this. However, this latest error I still get even when running outside stimela.

Do you still get errors when running with the latest QuartiCal release, not via stimela? If so, please open a separate issue. From what I can see above, I suspect that these are problems only on the stimelation branch.

Kincaidr commented 1 year ago

Yes i can confirm the above error results when using in stimela or outside of stimela with quartical stimelation branch. Without stimela using the main branch i get a different error which i posted now in a new issue: #207

JSKenyon commented 1 year ago

Closing for now as this an upstream problem. Sorry @Kincaidr, things will be simpler once the branch is merged but I cannot do that until things are stable.