1414from arl .image .iterators import image_raster_iter , image_null_iter
1515from arl .image .operations import create_empty_image_like
1616from arl .imaging import normalize_sumwt
17- from arl .imaging import predict_2d_base , invert_2d_base , \
18- predict_timeslice_single , invert_timeslice_single , \
19- predict_wstack_single , invert_wstack_single
17+ from arl .imaging import predict_2d_base , invert_2d_base
18+ from arl . imaging . timeslice import predict_timeslice_single , invert_timeslice_single
19+ from arl . imaging . wstack import predict_wstack_single , invert_wstack_single
2020from arl .visibility .base import copy_visibility , create_visibility_from_rows
2121from arl .visibility .coalesce import coalesce_visibility
2222from arl .visibility .iterators import vis_slice_iter , vis_timeslice_iter , vis_null_iter , \
@@ -47,7 +47,7 @@ def imaging_contexts():
4747 'image_iterator' : image_null_iter ,
4848 'vis_iterator' : vis_slice_iter ,
4949 'inner' : 'image' },
50- 'facets+slice ' : {'predict' : predict_2d_base ,
50+ 'facets_slice ' : {'predict' : predict_2d_base ,
5151 'invert' : invert_2d_base ,
5252 'image_iterator' : image_raster_iter ,
5353 'vis_iterator' : vis_slice_iter ,
@@ -57,7 +57,7 @@ def imaging_contexts():
5757 'image_iterator' : image_null_iter ,
5858 'vis_iterator' : vis_timeslice_iter ,
5959 'inner' : 'vis' },
60- 'facets+timeslice ' : {'predict' : predict_timeslice_single ,
60+ 'facets_timeslice ' : {'predict' : predict_timeslice_single ,
6161 'invert' : invert_timeslice_single ,
6262 'image_iterator' : image_raster_iter ,
6363 'vis_iterator' : vis_timeslice_iter ,
@@ -66,13 +66,13 @@ def imaging_contexts():
6666 'invert' : invert_2d_base ,
6767 'image_iterator' : image_raster_iter ,
6868 'vis_iterator' : vis_null_iter ,
69- 'inner' : 'vis ' },
69+ 'inner' : 'image ' },
7070 'wstack' : {'predict' : predict_wstack_single ,
7171 'invert' : invert_wstack_single ,
7272 'image_iterator' : image_null_iter ,
7373 'vis_iterator' : vis_wstack_iter ,
7474 'inner' : 'image' },
75- 'facets+wstack ' : {'predict' : predict_wstack_single ,
75+ 'facets_wstack ' : {'predict' : predict_wstack_single ,
7676 'invert' : invert_wstack_single ,
7777 'image_iterator' : image_raster_iter ,
7878 'vis_iterator' : vis_wstack_iter ,
@@ -87,15 +87,18 @@ def imaging_context(context='2d'):
8787 return contexts [context ]
8888
8989
90- def invert_context (vis : Visibility , im : Image , dopsf = False , normalize = True , context = '2d' , inner = None , ** kwargs ):
90+ def invert_context (vis , im : Image , dopsf = False , normalize = True , context = '2d' , inner = None ,
91+ ** kwargs ):
9192 """ Invert using a specified iterators and invert
9293
9394 :param vis:
9495 :param im:
9596 :param dopsf: Make the psf instead of the dirty image
9697 :param normalize: Normalize by the sum of weights (True)
98+ :param context: Imaing context e.g. '2d', 'timeslice', etc.
99+ :param inner: Inner loop 'vis'|'image'
97100 :param kwargs:
98- :return:
101+ :return: Image, sum of weights
99102 """
100103 c = imaging_context (context )
101104 vis_iter = c ['vis_iterator' ]
@@ -129,21 +132,21 @@ def invert_context(vis: Visibility, im: Image, dopsf=False, normalize=True, cont
129132 totalwt += sumwt
130133 resultimage .data += workimage .data
131134 else :
135+ # We assume that the weight is the same for all image iterations
132136 totalwt = None
133137 workimage = create_empty_image_like (im )
134138 for dpatch in image_iter (workimage , ** kwargs ):
135139 totalwt = None
136- sumwt = 0.0
137140 for rows in vis_iter (svis , ** kwargs ):
138141 if numpy .sum (rows ):
139142 visslice = create_visibility_from_rows (svis , rows )
140143 result , sumwt = invert (visslice , dpatch , dopsf , normalize = False , ** kwargs )
141144 # Ensure that we fill in the elements of dpatch instead of creating a new numpy arrray
142145 dpatch .data [...] += result .data [...]
143- if totalwt is None :
144- totalwt = sumwt
145- else :
146- totalwt += sumwt
146+ if totalwt is None :
147+ totalwt = sumwt
148+ else :
149+ totalwt += sumwt
147150 resultimage .data += workimage .data
148151 workimage .data [...] = 0.0
149152
@@ -153,8 +156,16 @@ def invert_context(vis: Visibility, im: Image, dopsf=False, normalize=True, cont
153156 return resultimage , totalwt
154157
155158
156- def predict_context (vis : Visibility , model : Image , context = '2d' , inner = None , ** kwargs ) -> Visibility :
159+ def predict_context (vis , model : Image , context = '2d' , inner = None , ** kwargs ) -> Visibility :
157160 """Iterate through prediction using specified iterators and predict
161+
162+ :param vis:
163+ :param model: Model image, used to determine image characteristics
164+ :param context: Imaing context e.g. '2d', 'timeslice', etc.
165+ :param inner: Inner loop 'vis'|'image'
166+ :param kwargs:
167+ :return:
168+
158169
159170 """
160171 c = imaging_context (context )
0 commit comments