ratt-ru / QuartiCal

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

Plotter not working when transferring to multiple fields in the same command #284

Closed bennahugo closed 1 year ago

bennahugo commented 1 year ago

On #758a45c65c88a171e4fe

Getting the following presumably due to the field axes being mangled:

(venvquartical) > $ goquartical-plot gains.qc.sec.transferonly/K plots --plot-var params --flag-var param_flags --iter-axes antenna direction param_name --agg-axis param_freq --xaxis param_time
Traceback (most recent call last):
  File "/home/bhugo/LunarPolarimetry/absleakage_study/venvquartical/bin/goquartical-plot", line 8, in <module>
    sys.exit(plot())
  File "/home/bhugo/LunarPolarimetry/absleakage_study/QuartiCal/quartical/apps/plotter.py", line 93, in plot
    xds = xarray.combine_by_coords(xdsl, combine_attrs="drop").compute()
  File "/home/bhugo/LunarPolarimetry/absleakage_study/venvquartical/lib/python3.8/site-packages/xarray/core/combine.py", line 982, in combine_by_coords
    concatenated = _combine_single_variable_hypercube(
  File "/home/bhugo/LunarPolarimetry/absleakage_study/venvquartical/lib/python3.8/site-packages/xarray/core/combine.py", line 655, in _combine_single_variable_hypercube
    raise ValueError(
ValueError: Resulting object does not have monotonic global indexes along dimension param_time

when running the following ala transfer cal recipe:

### KG per scan
goquartical \
input_ms.path=s0_offsets.flagged.avg.uncorrected.ms \
input_ms.data_column=DATA \
input_ms.time_chunk=100000000s \
input_ms.select_fields="[1]" \
input_ms.group_by="['SCAN_NUMBER',FIELD_ID,DATA_DESC_ID]" \
input_model.recipe=MODEL_DATA \
solver.terms="['K','Gp','Ga']" \
solver.iter_recipe="[0,20,20]" \
solver.reference_antenna="2" \
output.products="[]" \
output.columns="[]" \
output.overwrite=False \
Gp.type=phase \
Gp.time_interval=64s \
Gp.freq_interval=0 \
Ga.type=amplitude \
Ga.time_interval=64s \
Ga.freq_interval=0 \
K.type=delay \
K.time_interval=64s \
K.freq_interval=0 \
K.initial_estimate=True
### B inf, combine="scan"
goquartical \
input_ms.path=s0_offsets.flagged.avg.uncorrected.ms \
input_ms.data_column=DATA \
input_ms.time_chunk=100000000s \
input_ms.select_fields="[1]" \
input_ms.group_by="[FIELD_ID,DATA_DESC_ID]" \
input_model.recipe=MODEL_DATA \
solver.terms="['K','Gp','Ga','B']" \
solver.iter_recipe="[0,0,0,150]" \
solver.reference_antenna="2" \
output.products="[]" \
output.columns="[]" \
output.overwrite=False \
output.gain_directory=gains.qc.B \
Gp.type=phase \
Gp.time_interval=64s \
Gp.freq_interval=0 \
Gp.load_from=gains.qc/Gp \
Ga.type=amplitude \
Ga.time_interval=64s \
Ga.freq_interval=0 \
Ga.load_from=gains.qc/Ga \
B.type=diag_complex \
B.time_interval=1000000000s \
B.freq_interval=1 \
K.type=delay \
K.time_interval=64s \
K.freq_interval=0 \
K.initial_estimate=False \
K.load_from=gains.qc/K
### applycal KGB to both fields 0,1 
goquartical \
input_ms.path=s0_offsets.flagged.avg.uncorrected.ms \
input_ms.data_column=DATA \
input_ms.time_chunk=100000000s \
input_ms.select_fields="[0,1]" \
input_ms.group_by="[FIELD_ID,DATA_DESC_ID]" \
input_model.recipe=MODEL_DATA \
solver.terms="['K','Gp','Ga','B']" \
solver.iter_recipe="[0,0,0,0]" \
solver.reference_antenna="2" \
output.products="[corrected_data]" \
output.columns="['CORRECTED_DATA']" \
output.overwrite=False \
output.gain_directory=gains.qc.sec.transferonly \
Gp.type=phase \
Gp.time_interval=64s \
Gp.freq_interval=0 \
Gp.load_from=gains.qc/Gp \
Ga.type=amplitude \
Ga.time_interval=64s \
Ga.freq_interval=0 \
Ga.load_from=gains.qc/Ga \
B.type=diag_complex \
B.time_interval=1000000000s \
B.freq_interval=1 \
B.load_from=gains.qc.B/B \
K.type=delay \
K.time_interval=64s \
K.freq_interval=0 \
K.initial_estimate=False \
K.load_from=gains.qc/K
JSKenyon commented 1 year ago

This should be resolved on the v0.2.1-dev branch. Note that it is currently not possible to plot multiple fields on the same figure, although I may add the feature at a later date. However, the plotter can now iterate over FIELD_ID which should be adequate in most cases.