def akshay_partial_summarize(name_pattern, group_by, av_nuc_p53, av_en_p53, output): with open(output, 'ab') as output_file: writer = csv_writer(output_file) for i, nuc_pac in enumerate(zip(av_nuc_p53, av_en_p53)): writer.writerow( [name_pattern, group_by, i, nuc_pac[0], nuc_pac[1]])
def linhao_secondary_summarize(primary_namespace, output): with open(output, 'ab') as output_file: writer = csv_writer(output_file) namespace = primary_namespace['name pattern'] tag_group = primary_namespace['group id'] total_cells = len(np.unique(primary_namespace['pre_cell_labels'])) - 1 analyzed_cells = len(np.unique(primary_namespace['cell_labels'])) - 1 writer.writerow([namespace] + tag_group + [total_cells, analyzed_cells]) return primary_namespace
def Kristen_summarize_a(name_pattern, q_mean, q_median, q_std, nq_mean, nq_median, nq_std, slope, r2, p, output): with open(output, 'ab') as output_file: # csv_read = csv.res writer = csv_writer(output_file, delimiter='\t') for i in name_pattern: writer.writerow([ i, q_mean, q_median, q_std, nq_mean, nq_median, nq_std, slope, r2, p ])
def linhao_summarize(primary_namespace, output): with open(output, 'ab') as output_file: writer = csv_writer(output_file) namespace = primary_namespace['name pattern'] tag_group = primary_namespace['group id'] secondary_namespace = primary_namespace['per_cell'] pre_puck = [namespace] + tag_group for key, value in secondary_namespace.iteritems(): if key != '_pad': proper_puck = pre_puck+[key, value['gfp_mqvi'], value['mch_mqvi'], value['final_classification']] writer.writerow(proper_puck) return primary_namespace
def xi_pre_render(name_pattern, proj_gfp, qual_gfp, cell_labels, average_gfp_pad, proj_mch, mch, gfp, timestamp, save=False, directory_to_save_to='verification', mch_cutoff=0.2, slector_cutoff=0.1): plt.figure(figsize=(20, 15)) plt.suptitle(name_pattern) main_ax = plt.subplot(231) plt.title('GFP') plt.imshow(proj_gfp, interpolation='nearest') plt.contour(cell_labels > 0, [0.5], colors='w') plt.subplot(232, sharex=main_ax, sharey=main_ax) plt.title('log-GFP') plt.imshow(np.log(proj_gfp + np.min(proj_gfp[proj_gfp > 0])), cmap='hot', interpolation='nearest') plt.contour(cell_labels > 0, [0.5], colors='w') plt.subplot(233, sharex=main_ax, sharey=main_ax) plt.title('raw segmentation') plt.imshow(qual_gfp, cmap='gray', interpolation='nearest') plt.contour(cell_labels > 0, [0.5], colors='w') ax = plt.subplot(234, sharex=main_ax, sharey=main_ax) plt.title('labeled segmentation') plt.imshow(cell_labels, cmap=plt.cm.spectral, interpolation='nearest') unique = np.unique(cell_labels) for i in unique: mask = cell_labels == i x, y = scipy.ndimage.measurements.center_of_mass(mask) ax.text(y - 8, x + 8, '%s' % i, fontsize=10) plt.subplot(235) selector = np.logical_and(mch > slector_cutoff, gfp > slector_cutoff) plt.title('mCh-GFP correlation - %s, qual GFP intensity: %s' % (np.corrcoef(mch[selector], gfp[selector])[0, 1], np.median(gfp[mch > mch_cutoff]))) slope, intercept, rvalue, pvalue, stderr = linregress( mch[selector], gfp[selector]) better2D_desisty_plot(mch[selector], gfp[selector]) linarray = np.arange(0.1, 0.5, 0.05) plt.plot(linarray, intercept + slope * linarray, 'r') plt.xlabel('mCherry') plt.ylabel('GFP') plt.subplot(236, sharex=main_ax, sharey=main_ax) plt.title('mCherry') plt.imshow(proj_mch, interpolation='nearest') plt.contour(cell_labels > 0, [0.5], colors='w') with open('xi_analys_results.csv', 'ab') as output_file: writer = csv_writer(output_file) puck = [ name_pattern, timestamp, np.corrcoef(mch[selector], gfp[selector])[0, 1], np.median(gfp[mch > mch_cutoff]), np.average(gfp[mch > mch_cutoff]), slope, rvalue, pvalue ] writer.writerow(puck) if not save: plt.show() else: name_puck = directory_to_save_to + '/' + 'xi_pre_render-' + timestamp + '-' + name_pattern + '.png' plt.savefig(name_puck) plt.close()
def Kristen_render(name_pattern, group_id, mCherry, extranuclear_mCherry_pad, GFP_orig, mCherry_orig, output, save=False, directory_to_save_to='verification'): labels, _ = ndi.label(extranuclear_mCherry_pad) unique_segmented_cells_labels = np.unique(labels)[1:] mCherry_cutoff = np.zeros_like(mCherry) qualifying_cell_label = [] qualifying_regression_stats = [] for cell_label in unique_segmented_cells_labels: mCherry_2 = np.zeros_like(mCherry) my_mask = labels == cell_label average_apply_mask = np.mean(mCherry[my_mask]) intensity = np.sum(mCherry[my_mask]) binary_pad = np.zeros_like(mCherry) binary_pad[my_mask] = 1 pixel = np.sum(binary_pad[my_mask]) if (average_apply_mask > .05 or intensity > 300) and pixel > 4000: GFP_limited_to_cell_mask = imagepipe.raw_functions.f_3d_stack_2d_filter( GFP_orig, my_mask) mCherry_limited_to_cell_mask = imagepipe.raw_functions.f_3d_stack_2d_filter( mCherry_orig, my_mask) qualifying_3d_GFP = GFP_limited_to_cell_mask[ mCherry_limited_to_cell_mask > 50] average_3d_GFP = np.mean(qualifying_3d_GFP) median_3d_GFP = np.median(qualifying_3d_GFP) std_3d_GFP = np.std(qualifying_3d_GFP) sum_qualifying_GFP = np.sum(qualifying_3d_GFP) nonqualifying_3d_GFP = GFP_limited_to_cell_mask[ mCherry_limited_to_cell_mask <= 50] average_nonqualifying_3d_GFP = np.mean(nonqualifying_3d_GFP) median_nonqualifying_3d_GFP = np.median(nonqualifying_3d_GFP) std_nonqualifying_3d_GFP = np.std(nonqualifying_3d_GFP) sum_nonqualifying_GFP = np.sum(nonqualifying_3d_GFP) sum_total_GFP = sum_qualifying_GFP + sum_nonqualifying_GFP percent_qualifying_over_total_GFP = sum_qualifying_GFP / sum_total_GFP # report the percentage too or sums are sufficient? GFP_orig_qualifying = imagepipe.raw_functions.f_3d_stack_2d_filter( GFP_orig, my_mask) mCherry_orig_qualifying = imagepipe.raw_functions.f_3d_stack_2d_filter( mCherry_orig, my_mask) mCherry_1d = mCherry_orig_qualifying[mCherry_orig_qualifying > 50] GFP_1d = GFP_orig_qualifying[mCherry_orig_qualifying > 50] regression_results = stats.linregress(GFP_1d, mCherry_1d) mCherry_2[my_mask] = mCherry[my_mask] mCherry_cutoff[my_mask] = mCherry[my_mask] qualifying_cell_label.append(cell_label) qualifying_regression_stats.append( (regression_results[0], regression_results[2], regression_results[3])) name_pattern_split = name_pattern.split(' - ') transfection_label = name_pattern_split[0] cell_type = name_pattern_split[1] exp_time = name_pattern_split[2] image_number = name_pattern_split[4] with open(output, 'ab') as output_file: writer = csv_writer(output_file, delimiter='\t') writer.writerow([ transfection_label, cell_type, exp_time, image_number, cell_label, sum_qualifying_GFP, sum_total_GFP, average_3d_GFP, median_3d_GFP, std_3d_GFP, average_nonqualifying_3d_GFP, median_nonqualifying_3d_GFP, std_nonqualifying_3d_GFP, regression_results[0], regression_results[2], regression_results[3] ]) plt.figure(figsize=(26.0, 15.0)) plt.title('Kristen\'s Data') plt.suptitle(name_pattern) main_ax = plt.subplot(221) plt.subplot(221, sharex=main_ax, sharey=main_ax) plt.title('mCherry Binary') im = plt.imshow(extranuclear_mCherry_pad, interpolation='nearest', cmap='hot') plt.colorbar(im) plt.subplot(222, sharex=main_ax, sharey=main_ax) plt.title('mCherry') plt.imshow(mCherry, interpolation='nearest') plt.contour(extranuclear_mCherry_pad, [0.5], colors='k') plt.subplot(223) plt.better2D_desisty_plot(GFP_1d, mCherry_1d) plt.title('mCherry Intensity as a Function of GFP Voxel') plt.xlabel('GFP Voxel') plt.ylabel('mCherry Intensity') plt.subplot(224, sharex=main_ax, sharey=main_ax) plt.title('mCherry-cutoff applied') plt.imshow(mCherry_2, interpolation='nearest') if not save: plt.show() else: name_puck = directory_to_save_to + '/' + 'Kristen-' + name_pattern + '_cell' + str( cell_label) + '.png' plt.savefig(name_puck) plt.close() plt.figure(figsize=(26.0, 15.0)) main_ax = plt.subplot(121) plt.subplot(121, sharex=main_ax, sharey=main_ax) plt.suptitle('mCherry Before and After Qualifying Cell Cutoff is Applied') plt.title('mCherry') im = plt.imshow(mCherry, interpolation='nearest') plt.colorbar(im) plt.subplot(122, sharex=main_ax, sharey=main_ax) plt.title('mCherry') plt.imshow(mCherry_cutoff, interpolation='nearest') if not save: plt.show() else: name_puck = directory_to_save_to + '/' + 'Kristen-' + name_pattern + 'cutoff_app' + '.png' plt.savefig(name_puck) plt.close() return qualifying_regression_stats