def make_analysis(self, dataset, xy_mask): masked_dataset = MaskedDataset(dataset=dataset, xy_mask=xy_mask) transformers = [] for i in range(masked_dataset.uv_wavelengths.shape[0]): transformers.append( self.transformer_class( uv_wavelengths=masked_dataset.uv_wavelengths[i], grid=masked_dataset.grid_3d.grid_2d.in_radians)) """ def get_continuum(masked_dataset, regions): pass continuum = np.zeros( shape=(dataset.visibilities.shape[0], ), dtype=bool ) for region in self.regions: continuum += region def func(masked_dataset, continuum): argspec = inspect.getargspec(MaskedDatasetLite.__init__) args = {} for argname in argspec.args: if argname not in ["self"]: if hasattr(masked_dataset, argname): array = getattr(masked_dataset, argname) args[argname] = reshape_array( array=array[~continuum] ) return MaskedDatasetLite(**args) masked_dataset_continuum = func(masked_dataset, continuum) #print(masked_dataset_continuum.uv_wavelengths.shape) transformer_continuum = self.transformer_class( uv_wavelengths=masked_dataset_continuum.uv_wavelengths, grid=masked_dataset.grid_3d.grid_2d.in_radians ) # dirty_image = transformer_continuum.image_from_visibilities( # visibilities=masked_dataset_continuum.visibilities # ) # plt.figure() # plt.imshow(dirty_image[::-1], cmap="jet") # plt.xticks([]) # plt.yticks([]) # plt.show() """ return Analysis(masked_dataset=masked_dataset, transformers=transformers, transformer_continuum=None, lens_redshift=self.lens_redshift, source_redshift=self.source_redshift, image_path=self.optimizer.paths.image_path)
def make_analysis(self, dataset, xy_mask): # NOTE: Multiple lines can be present in a cube, in which # case region will be a list (renamed to regions) masked_dataset = MaskedDataset( dataset=dataset, xy_mask=xy_mask, region=self.region ) masked_dataset_continuum = RegionMaskedDataset( dataset=masked_dataset.dataset_outside_region, uv_mask=masked_dataset.uv_mask_outside_region, continuum=True ) masked_dataset_line = RegionMaskedDataset( dataset=masked_dataset.dataset_inside_region, uv_mask=masked_dataset.uv_mask_inside_region, continuum=False ) transformers = [] for i in range(masked_dataset.uv_wavelengths.shape[0]): transformers.append( self.transformer_class( uv_wavelengths=masked_dataset.uv_wavelengths[i], grid=masked_dataset.grid_3d.grid_2d.in_radians ) ) transformer_continuum = self.transformer_class( uv_wavelengths=masked_dataset_continuum.uv_wavelengths, grid=masked_dataset.grid_3d.grid_2d.in_radians ) # # NOTE: EXPERIMENTAL # holder = RegionMaskedDatasetsHolder( # region_masked_datasets=[ # masked_dataset_continuum, # masked_dataset_line # ] # ) # exit() # TODO: region_masked_datasets can be a class that holds individual # masked datasets and it's only function will be to differentiate between # a masked_dataset corresponding to the continuum and the rest. return Analysis( masked_dataset=masked_dataset, region_masked_datasets=[ masked_dataset_continuum, masked_dataset_line ], transformers=transformers, transformer_continuum=transformer_continuum, image_path=self.optimizer.paths.image_path )
def make_analysis(self, dataset, xy_mask): masked_dataset = MaskedDataset(dataset=dataset, xy_mask=xy_mask) transformer = self.transformer_class( uv_wavelengths=masked_dataset.uv_wavelengths, grid=masked_dataset.grid.in_radians) return Analysis(masked_dataset=masked_dataset, transformer=transformer, self_calibration=self.self_calibration, image_path=self.optimizer.paths.image_path)
def make_analysis(self, dataset, xy_mask): masked_dataset = MaskedDataset(dataset=dataset, xy_mask=xy_mask) transformers = [] for i in range(masked_dataset.uv_wavelengths.shape[0]): transformers.append( self.transformer_class( uv_wavelengths=masked_dataset.uv_wavelengths[i], grid=masked_dataset.grid_3d.grid_2d.in_radians)) return Analysis(masked_dataset=masked_dataset, transformers=transformers, image_path=self.optimizer.paths.image_path)
def make_analysis(self, dataset, xy_mask): # NOTE: The masked_dataset is no longer being used, instead each compoent # (i.e. continuum + emission line regions) each have their own masked_dataset # which is initialized here. def masked_datasets_from_regions(masked_dataset, regions): args = { "continuum":{} } idx = np.zeros( shape=(masked_dataset.visibilities.shape[0], ), dtype=bool ) for i, region in enumerate(regions): idx += region.idx args["region_{}".format(i)] = {} if all(idx): continuum = False else: continuum = True argspec = inspect.getargspec(MaskedDatasetLite.__init__) #args = {} for argname in argspec.args: if argname not in ["self"]: if hasattr(masked_dataset, argname): array = getattr(masked_dataset, argname) if continuum: args["continuum"][argname] = reshape_array( array=array[~idx] ) for i, region in enumerate(regions): args["region_{}".format(i)][argname] = reshape_array( array=array[region.idx] ) #args["region_{}".format(i)][argname] = np.average(a=array[region.idx], axis=0) masked_datasets = { "continuum":MaskedDatasetLite(**args["continuum"]) if continuum else None } for i, region in enumerate(regions): masked_datasets["region_{}".format(i)] = MaskedDatasetLite(**args["region_{}".format(i)]) return masked_datasets # NOTE: Multiple lines can be present in a cube, in which # case region will be a list (renamed to regions) - DONE # NOTE: Can we skip the initialization of the masked dataset? masked_dataset = MaskedDataset( dataset=dataset, xy_mask=xy_mask, ) masked_datasets = masked_datasets_from_regions( masked_dataset=masked_dataset, regions=self.regions ) transformers = {} for key in masked_datasets.keys(): if masked_datasets[key] is not None: transformers[key] = self.transformer_class( uv_wavelengths=masked_datasets[key].uv_wavelengths, grid=masked_dataset.grid_3d.grid_2d.in_radians ) else: transformers[key] = None return Analysis( masked_datasets=masked_datasets, transformers=transformers, grid=masked_dataset.grid_3d.grid_2d, image_path=self.optimizer.paths.image_path )
def make_analysis(self, dataset, mask): masked_dataset = MaskedDataset(dataset=dataset, mask=mask) return Analysis(masked_dataset=masked_dataset, image_path=self.optimizer.paths.image_path)