plot_arr = plot_arr[np.where(plot_arr[:, 2] > z_thresh)] print(plot_arr.shape) x_range = range(0, 101) x_dict = dict() for x_val in x_range: x_dict[x_val] = list() list_vals = plot_arr[np.where((plot_arr[:, 0]*100.0).astype(np.int16) == x_val)].tolist() if len(list_vals) > bin_limit: temp_list = list(range(len(list_vals))) list_locs = Sublist(temp_list).random_selection(bin_limit) else: list_locs = list(range(len(list_vals))) x_dict[x_val] += list(list_vals[ii] for ii in list_locs) x_counts = dict() plot_dicts_ = list() for k, v in x_dict.items(): x_counts[k] = len(v) plot_dicts_ += list({xvar: elem[0], yvar: elem[1], zvar: elem[2]} for elem in v) print(x_counts) print(len(plot_dicts_)) freq_list, bin_edges = np.histogram(list(float(pt[xvar]) for pt in plot_dicts_), bins=eq_bins, range=(0, 1))
def quantile_regress(x, y, q=None, degree=1, xlim=None, ylim=None, print_summary=False): if q is None: q = [0.1, 0.5, 0.9] elif type(q).__name__ in ('int', 'float', 'str'): try: q = [float(q)] except Exception as e: print(e) elif type(q).__name__ in ('list', 'tuple'): q = Sublist(q) else: raise ValueError("Data type not understood: q") if type(x).__name__ in ('list', 'tuple', 'NoneType'): x_ = np.array(x) else: x_ = x.copy() if type(y).__name__ in ('list', 'tuple', 'NoneType'): y_ = np.array(y) else: y_ = y.copy() if xlim is not None: y_ = y_[np.where((x_ >= xlim[0]) & (x_ <= xlim[1]))] x_ = x_[np.where((x_ >= xlim[0]) & (x_ <= xlim[1]))] if ylim is not None: x_ = x_[np.where((y_ >= ylim[0]) & (y_ <= ylim[1]))] y_ = y_[np.where((y_ >= ylim[0]) & (y_ <= ylim[1]))] ''' y_ = y_[:, np.newaxis] const_ = (x_ * 0.0) + 1.0 x_ = np.hstack([x_[:, np.newaxis], const_[:, np.newaxis]]) ''' df = pd.DataFrame({'y': y_, 'x': x_}) if degree == 0: raise RuntimeError('Degree of polynomial should be > 0') rel_str = 'y ~ ' for ii in range(degree): if ii == 0: rel_str += 'x' else: rel_str += ' + I(x ** {})'.format(str(float(ii + 1))) mod = smf.quantreg(rel_str, df) mod.initialize() q_res = list() for q_ in q: res_ = mod.fit(q=q_) if print_summary: print(res_.summary()) print('\n') q_res.append({ 'q': q_, 'rsq': res_.rsquared, 'adj_rsq': res_.rsquared_adj, 'coeffs': list(reversed(list(res_.params))), 'pvals': res_.pvalues.tolist(), 'stderrs': res_.bse.tolist() }) return q_res
plot_arr = plot_arr[np.where(plot_arr[:, 2] > z_thresh)] print(plot_arr.shape) x_range = range(0, 101) x_dict = dict() for x_val in x_range: x_dict[x_val] = list() list_vals = plot_arr[np.where(plot_arr[:, 0] == float(x_val) / 100.0)].tolist() if len(list_vals) > bin_limit: temp_list = list(range(len(list_vals))) list_locs = Sublist(temp_list).random_selection(bin_limit) else: list_locs = list(range(len(list_vals))) x_dict[x_val] += list(list_vals[ii] for ii in list_locs) x_counts = dict() plot_dicts_ = list() for k, v in x_dict.items(): x_counts[k] = len(v) plot_dicts_ += list({xvar: elem[0], yvar: elem[1]} for elem in v) print(x_counts) print(len(plot_dicts_)) freq_list, bin_edges = np.histogram(list(
fire_types = ['single', 'multiple'] xvar = 'tree_cover' yvar = 'time_since_fire' zvar = 'decid_frac' # ylim = (0, 80) # time since fire ylim = (1950, 2018) xlim = (0, 1) # tree cover zlim = (0, 1) # deciduous fraction zcount_lim = 100000 x_ = np.array(list(range(0, 101))) / 100.0 # y_ = np.array(Sublist.frange(0, 70, 1)) y_ = np.array(Sublist.frange(1950, 2018, 1)) lenx = x_.shape[0] leny = y_.shape[0] print(x_) print(y_) years = [1992, 2000, 2005, 2010, 2015] version = 11 filelist = list(in_dir + 'year_{}_{}_{}_fire.csv'.format( str(year_edge[0])[2:], str(year_edge[1])[2:], fire_type) for year_edge in year_edges for fire_type in fire_types)
xvar = '{}_2'.format(bandname) xlabel = 'Season 2 {}'.format(bandname.upper()) yvar = '{}_1'.format(bandname) ylabel = 'Season 1 {}'.format(bandname.upper()) pts = list() for i in range(0, len(val_dicts)): try: pts.append((float(val_dicts[i][xvar]), float(val_dicts[i][yvar]))) except ValueError: pass maxx = Sublist.percentile(list(elem[0] for elem in pts), 99.995) maxy = Sublist.percentile(list(elem[1] for elem in pts), 99.995) max_elem = max(maxx, maxy) Opt.cprint('X and Y limits: {:3.3f} {:3.3f}'.format(maxx, maxy)) plot_heatmap = { 'type': 'rheatmap2', 'points': pts, 'xlabel': xlabel, 'ylabel': ylabel, 'color_bar_label': 'Data-points per bin', 'plotfile': plot_file, 'xlim': (0, max_elem), 'ylim': (0, max_elem),
fire_types = ['single', 'multiple'] xvar = 'tree_cover' yvar = 'time_since_fire' zvar = 'decid_frac' ylim = (0, 80) # time since fire # ylim = (1950, 2018) xlim = (0, 1) # tree cover zlim = (0, 1) # deciduous fraction zcount_lim = 100000 x_ = np.array(list(range(0, 101))) / 100.0 # y_ = np.array(Sublist.frange(0, 70, 1)) y_ = np.array(Sublist.frange(0, 80, 1)) lenx = x_.shape[0] leny = y_.shape[0] print(x_) print(y_) years = [1992, 2000, 2005, 2010, 2015] version = 12 filelist = list(in_dir + 'year_{}_{}_{}_fire.csv'.format( str(year_edge[0])[2:], str(year_edge[1])[2:], fire_type) for year_edge in year_edges for fire_type in fire_types)
for x_val in x_range: x_dict[x_val] = list() list_vals = list() for dict_ in val_dicts: if dict_[xvar] == x_val and dict_[yvar] > 0 and dict_[ xvar_] >= cutoff: temp = { xvar: float(dict_[xvar]) / 100.0, yvar: float(dict_[yvar]) / 1000.0, xvar_: float(dict_[xvar_] / 100.0) } list_vals.append(temp) if len(list_vals) > bin_limit: list_vals = Sublist(list_vals).random_selection(bin_limit) x_dict[x_val] += list_vals x_counts = dict() plot_dicts_ = list() for k, v in x_dict.items(): x_counts[k] = len(v) plot_dicts_ += v print(x_counts) print(len(plot_dicts_)) freq_list, bin_edges = np.histogram(list( float(pt[xvar]) for pt in plot_dicts_), bins=25,