import os
import shutil
import typing
from typing import Tuple, List, Union, Optional
from . import flaghelper as fh
from casatasks import casalog
from casatools import msuvbinner as msbin
from casatools import msmetadata
from casatools import ms
ms = ms()
msmd = msmetadata()
from casatasks.private.imagerhelpers.input_parameters import (
saveparams2last,
determineFreqRange,
)
@saveparams2last(multibackup=True)
def msuvbin(
vis: Optional[str] = None,
field: Optional[str] = None,
spw: Optional[str] = None,
taql: Optional[str] = None,
outputvis: Optional[str] = None,
phasecenter: Optional[str] = None,
imsize: Optional[Union[List[int], List[float], int, float]] = None,
cell: Optional[str] = None,
ncorr: Optional[int] = None,
nchan: Optional[int] = None,
start: Optional[str] = None,
width: Optional[str] = None,
wproject: Optional[bool] = None,
memfrac: Optional[float] = None,
mode: Optional[str] = None,
flagbackup: Optional[bool] = None,
) -> None:
fstart = start
fstep = width
casalog.origin("msuvbin ")
if wproject:
casalog.post(
"The wprojection option is extremely slow; you may consider running without it",
"WARN",
"task_msuvbin"
)
if field == "":
field = "*"
fieldid = 0
fieldid = ms.msseltoindex(vis=vis, field=field)["field"][0]
if isinstance(imsize, (int, float)):
nx = imsize
ny = imsize
else:
nx = imsize[0]
ny = imsize[0] if (len(imsize)==1) else imsize[1]
if phasecenter == "":
msmd.open(vis)
phcen = msmd.phasecenter(fieldid)
msmd.done()