def KM_median(array, upper_lim_flags, left_censor=True, return_type='percentile'): kmf = KaplanMeierFitter() if upper_lim_flags is not None: if left_censor == True: kmf.fit_left_censoring(array, upper_lim_flags) else: kmf.fit(array, event_observed=upper_lim_flags) #right censoring else: kmf.fit(array, upper_lim_flags) median = median_survival_times(kmf.survival_function_) if return_type == 'percentile': upper_perc = kmf.percentile(0.25) lower_perc = kmf.percentile(0.75) print( f'median and 1st/3rd quartiles: {median}, {lower_perc}, {upper_perc}' ) return median, upper_perc, lower_perc elif return_type == 'ci': median_ci = median_survival_times(kmf.confidence_interval_).values print(f'median and CI: {median}, {median_ci}') return median, median_ci[0][0], median_ci[0][1] elif return_type == 'median': return median