Source code for qumas.MicrolensingMaps.micro_maps_func

import numpy as np
from scipy.ndimage import gaussian_filter
from .maps_utils import map2d_to_stats,renormalize_mean


main_path = "/home/felipe/work/MicrolensingProjects/MicrolensingMagnificationMaps"
dict_maps = {"alpha_0.1":  f"{main_path}/Mapas_magnification",
            "alpha_0.2":  f"{main_path}/Mapas_02"}


[docs] def maps_to_stats(name,component,rs_lday,pix,mappix,num_bins=100,bins_limit=3,rs_times = [0.3,1,2],dict_maps=dict_maps): """_summary_ Args: name (_type_): _description_ component (_type_): _description_ rs_lday (_type_): _description_ pix (_type_): _description_ mappix (_type_): _description_ num_bins (int, optional): _description_. Defaults to 100. bins_limit (int, optional): _description_. Defaults to 3. factors (list, optional): _description_. Defaults to [0.3,1,2]. dict_maps (_type_, optional): _description_. Defaults to dict_maps. Returns: _type_: _description_ """ mag_maps = {} for key,path in dict_maps.items(): map_1d_path = f'{path}/{name}{component}/magmap.dat' map_1d = np.loadtxt(map_1d_path) map_2d = np.reshape(map_1d, (int(mappix), int(mappix))) n_factor_results = {} for rs_time in rs_times: #print(key,rs_time) result = map2d_to_stats(map_2d,pix,rs_lday,num_bins=num_bins,bins_limit = bins_limit,rs_times = rs_time) n_factor_results[str(rs_time)] = result mag_maps[key] = n_factor_results return mag_maps
# def map_to_stat_full(name,component,rs_lday,pix,mappix): # print(f'Doing {name} {component}') # maps_alpha_01 = "/home/felipe/work/microlensing_timescale_qso_lensing/analysis/microlensing_maps/Mapas_magnification" # maps_alpha_02 = "/home/felipe/work/microlensing_timescale_qso_lensing/analysis/microlensing_maps/Mapas_02" # #magnification_map_path = f'microlensing_maps/{path_mapas}/{name}{component}/magmap.dat' # mag_maps = {} # for key,pats in zip(["alpha_0.1","alpha_0.2"],[maps_alpha_01,maps_alpha_02]): # map_1d_path = f'{pats}/{name}{component}/magmap.dat' # map_1d = np.loadtxt(map_1d_path) # map_2d = np.reshape(map_1d, (int(mappix), int(mappix))) # map_2d_norm = map_2d/np.mean(map_2d) # mag_map_2d_norm = -2.5*np.log10(map_2d_norm) # S = {} # for factor in [0.3,1,2]: # mag_map_2d_norm_conv = gaussian_filter(mag_map_2d_norm, [pix*rs_lday*factor,pix*rs_lday*factor],mode='mirror') # num_bins = 100 # bins = np.linspace(-3, 3, num_bins + 1) # counts, bin_edges = np.histogram(mag_map_2d_norm_conv.ravel(), bins=bins) # pmf = counts / counts.sum() # bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 # pdf = counts / (counts.sum() * np.diff(bin_edges)) # expected_pmf = sum(pmf * bin_centers) # mean = np.sum(bin_edges * np.r_[pmf, pmf[-1]]) # abs_mean = np.sum(abs(bin_edges) * np.r_[pmf, pmf[-1]]) # #cumulative = np.cumsum(pmf) # # Find the median index (the first outcome where cumulative probability is at least 0.5) # #median = outcomes[np.where(cumulative >= 0.5)[0][0]] # var_pmf = sum(pmf * bin_centers**2) - expected_pmf**2 # expected_pmf_abs = sum(pmf * abs(bin_centers)) # var_pmf_abs = sum(pmf * abs(bin_centers)**2) - expected_pmf_abs**2 # mean_pos_mag = renormalize_mean(pmf,bin_centers,bin_centers>0) # mean_neg_mag = renormalize_mean(pmf,bin_centers,bin_centers<0) # prob_mag_less_than_one = sum(pmf[bin_centers<-1]) # prob_mag_less_than_m_032 = sum(pmf[bin_centers<-0.32]) # prob_mag_more_than_05 = sum(pmf[bin_centers>0.5]) # prob_mag_more_than_m_032 = sum(pmf[bin_centers>0.32]) # #renormalize_mean(system_info[image]['pmf'],system_info[image]['bin_centers'],system_info[image]['bin_centers']>0) # small = { # "bin_centers": bin_centers, "pmf": pmf, "pdf": pdf, # "width": np.diff(bin_edges), "dx": np.diff(bin_edges)[0], # "expected_pmf": expected_pmf, "var_pmf": var_pmf, # "expected_pmf_abs": expected_pmf_abs, "var_pmf_abs": var_pmf_abs, # "bin_edges": bin_edges,"mag_map_2d_norm":mag_map_2d_norm,"mag_map_2d_norm_conv": mag_map_2d_norm_conv, # "factor":factor,'rs_lday':rs_lday,"mean_pos_mag":mean_pos_mag,"mean_neg_mag":mean_neg_mag,"prob_mag_less_than_one":prob_mag_less_than_one,"prob_mag_less_than_m_032":prob_mag_less_than_m_032, # "prob_mag_more_than_05":prob_mag_more_than_05,"prob_mag_more_than_m_032":prob_mag_more_than_m_032,"mean":mean} # S[factor] = small # mag_maps[key] = S # return mag_maps