def plotShapeMetrics(resultfile, pdfpages): ld = resultfile.obtain_data('ld') # get data as time series data = collections.defaultdict(list) for groupname in resultfile.groupnames: metrics = resultfile.obtain_data('shape_metrics', groupname) for k, v in metrics.iteritems(): data[k].append(v) data['time'].append(resultfile.obtain_data('time', groupname)) # plot it for groupname in resultfile.groupnames[-1:]: metrics = resultfile.obtain_data('shape_metrics', groupname) curv, curv_weights = resultfile.obtain_data('curvature_samples', groupname) #pprint.pprint(metrics) fig, axes = pyplot.subplots(2, 2, figsize=(8, 6)) text = [] text += [ 'time : {}'.format(f2s(resultfile.obtain_data('time', groupname))) ] text += [ 'surface tension : {}'.format( f2s( float(resultfile.f['parameters/tumor']. attrs['surface_tension']))) ] text += ['sphericity : {}'.format(f2s(metrics['sphericity']))] text += ['approx. radius : {}'.format(f2s(metrics['radius']))] text = '\n'.join(text) axes[0, 0].text(0.1, 0.1, text, fontsize=14) mpl_utils.remove_frame(axes[0, 0]) h, bins = np.histogram(curv, bins=10, weights=curv_weights, normed=True) bins = 0.5 * (bins[1:] + bins[:-1]) axes[0, 1].bar(bins, h, width=bins[1] - bins[0]) axes[0, 1].set(title=ur'$\kappa$', xlabel=ur'[1/\u03BCm]', ylabel='N') axes[1, 0].plot(data['time'], data['radius'], marker='x') axes[1, 0].set(xlabel='$t$', ylabel=r'$r_{tum}$') v, y0 = linearFit(data['time'], data['radius']) x = np.asarray([0., data['time'][-1] * 1.1]) y = y0 + v * x axes[1, 0].plot(x, y, label=ur'v = %s [\u03BCm/h]' % f2s(v)) axes[1, 0].legend() axes[1, 1].set_visible(False) fig.subplots_adjust(left=0.10, right=0.95, top=0.95, bottom=0.10, wspace=0.2, hspace=0.2) pdfpages.savefig(fig)
def PlotField(self, ax, sampleIndex=None, xcoord=None, color='k', label='', addXPositionLabel=False, addXMark=False, addYMark=False, marker=None): if sampleIndex is None: sampleIndex = np.searchsorted(self.samples['x'], xcoord) if marker is not None: marker = niceMarker(marker, color) else: marker = dict(color=color) p = self.samples['pos'][sampleIndex] idx = self.po2fieldld.WorldToLattice(p) idx -= self.po2fieldld.box.reshape(3, 2)[:, 0] yv_field = np.asarray(self.po2field[idx[0], :, idx[2]]) if addXPositionLabel: label += ' x = ' + myutils.f2s( self.samples['x'][sampleIndex]) + ' $\mu m$' if label: marker['label'] = label ax.plot(self.y_field, yv_field, **marker) if addXMark: ax.axvline(p[1], color='k', ls=':') if addYMark: po2 = self.samples['po2'][sampleIndex] ax.axhline(po2, ls='-', color=color)
def plotForPresent(fd, writer, data): dpi = 80 rc = matplotlib.rc rc('figure', figsize=list(0.75 / dpi * np.asarray([1024, 768])), dpi=dpi) rc('font', size=12.) rc('axes') #, titlesize = 12., labelsize = 12.) rc('pdf', compression=6, fonttype=42) rc( 'figure', **{ 'subplot.left': 0.04, 'subplot.right': 1. - 0.04, 'subplot.bottom': 0.06, 'subplot.top': 1. - 0.06, 'subplot.wspace': 0.1, 'subplot.hspace': 0.1 }) rc('savefig', facecolor='none', edgecolor='none', dpi=dpi) rc('font', **{'family': 'sans-serif'}) #,'sans-serif':['Helvetica']}) rc('path', simplify_threshold=0.01) #rc('lines', linewidth=2.) for groupname in fd.groupnames: print 'plt', groupname group = fd.f[groupname] fig = matplotlib.figure.Figure() fig.suptitle('$t$=%s h' % (myutils.f2s(group.attrs['time']))) #datanames = set(['conc', 'obstacle', 'vel_0', 'press', 'sources', 'ls']) if 1: ax1, ax2, (p1, p2), p3 = add_twinplot(fig, (2, 2, 1), fd, groupname, ['conc', 'obstacle']) ax1.legend() ax1.xaxis.set_visible(False) else: ax1, ax2, (p1, ), p3 = add_twinplot(fig, (2, 2, 1), fd, groupname, [ 'conc', ]) ax1.legend() ax1.xaxis.set_visible(False) ax1, ax2, (p1, ), _ = add_twinplot(fig, (2, 2, 2), fd, groupname, ['press']) ax1.legend([p1], [dataconfigs['press'].title]) ax1.xaxis.set_visible(False) ax1, ax2, (p1, ), _ = add_twinplot(fig, (2, 2, 3), fd, groupname, ['vel_0']) ax1.legend([p1], [dataconfigs['vel_0'].title]) ax1, ax2, (p1, ), _ = add_twinplot(fig, (2, 2, 4), fd, groupname, ['sources', 'oxy_sources']) ax1.legend( [p1], [dataconfigs['sources'].title, dataconfigs['oxy_sources'].title]) pdf.savefig(fig)
def plot_data(ax, bins, data, std, color, label): data = np.ma.filled(data, 0.) std = np.ma.filled(std, 0.) xy, clist = [], [] for i in xrange(len(data)): clist.append(0.5 * (bins[i] + bins[i + 1])) xy.append((bins[i], data[i])) xy.append((bins[i + 1], data[i])) xy = np.asarray(xy).transpose() ax.plot(xy[0], xy[1], color=color, lw=1.) ax.errorbar(clist, data, yerr=std, lw=0, color=color, mew=2., elinewidth=1., capsize=10., label=label) for c, d in zip(clist, data): ax.text(c, d, '$' + myutils.f2s(d, prec=2, latex=True) + '$', color=color)
def f2s(x): return myutils.f2s(x, exponential=False, latex=False)
def printit(id, label, unit): s = r'%s = %s +/- %s [%s]' % (label, myutils.f2s( bv[id][0] * 60.), myutils.f2s(bv[id][1] * 60.), unit) print s
matplotlib.use('Qt4Agg') import matplotlib.pyplot as pyplot import mpl_utils dpi = 80 rc = matplotlib.rc rc('figure', figsize=list(np.asarray([1024, 768]) / dpi), dpi=dpi) rc('font', size=11.) rc('axes', titlesize=13., labelsize=13.) rc('legend', fontsize=13.) rc('pdf', compression=6, fonttype=42) rc('savefig', facecolor='none', edgecolor='none', dpi=dpi) rc('font', **{'family': 'sans-serif'}) #,'sans-serif':['Helvetica']}) rc('path', simplify_threshold=0.01) df_formula = lambda x: (r'$\propto \epsilon ^ {- %s}$' % myutils.f2s( x, latex=True)) fig, ax = pyplot.subplots(1, 1) for df in dflist: ax.plot(df.bs, df.bc, ':kx', label='measured' if df is dflist[0] else None) avg_y0 = np.average([df.params[1] for df in dflist]) # ax.plot(dflist[0].bs, dflist[0].getY((-3., avg_y0)), 'r', label = df_formula(3.)) # ax.plot(dflist[0].bs, dflist[0].getY((-2., avg_y0)), 'g', label = df_formula(2.)) # ax.plot(dflist[0].bs, dflist[0].getY((-1., avg_y0)), 'b', label = df_formula(1.)) ax.plot(dflist[0].bs, dflist[0].getY((-3., avg_y0)), '-',
def printit(id, label, unit): s = r'$%s$ = $%s \pm %s$ [$%s$]' % ( label, myutils.f2s(bv[id][0], latex=True), myutils.f2s(bv[id][1], latex=True), unit) return s
from plotIff import mk_LF_, mk_CM_ from matplotlib.ticker import MaxNLocator import matplotlib import matplotlib.pyplot as pyplot import mpl_utils LabelFactory = mk_LF_() LF = LabelFactory ColorMaps = mk_CM_() CM = ColorMaps mastersize = mpl_utils.a4size a4size = mpl_utils.a4size gridcolor = (0.7, 0.7, 0.7) f2s = lambda x: myutils.f2s(x, latex=True) import extractVtkFields, plotVessels bins_rad = np.arange(0, 20000, 30.) bins_dist = np.arange(-10000., 10000., 30.) def get_tumld(tumorgroup): p = tumorgroup['ptc'].attrs['LATTICE_PATH'] tum_ld = krebsutils.read_lattice_data_from_hdf(tumorgroup.file[p]) #field_ld is in root #tum_ld = krebsutils.read_lattice_data_from_hdf(tumorgroup.parent.parent['field_ld']) #tum_ld = krebsutils.read_lattice_data_from_hdf(tumorgroup.file[tumorgroup['conc'].attrs['LATTICE_PATH']]) return tum_ld
def printavg(name, data): avg, std = np.average(data), np.std(data) print '%s = %s +/- %s' % (name, f2s(avg), f2s(std))
def PlotRadial(pdfwriter, dataman, resultfiles, distance_distribution_name): binspec = BinsSpecRange(-10000., 10000., 100.) curves_by_path_and_name = myutils.MultiDict(list) for f in files: fm = myutils.MeasurementFile(f.f, h5files) for outgroup_name in f.groupnames: gvessels = f.f[outgroup_name]['vessels'] gtumor = f.f[outgroup_name]['tumor'] for name in [ 'mvd', 'phi_vessels', 'shearforce', 'velocity', 'radius', 'maturation', 'flow' ]: d = dataman.obtain_data('basic_vessel_radial', name, gvessels, gtumor, 30., binspec, distance_distribution_name, None, (fm, outgroup_name)) curves_by_path_and_name[outgroup_name, name].append(d) #tumor_radius = f.f[outgroup_name]['tumor'].attrs['TUMOR_RADIUS'] # this needs work ... tumor_radius = dataman.obtain_data('approximate_tumor_radius', gtumor) curves_by_path_and_name[outgroup_name, 'approximate_tumor_radius'].append( myutils.MeanValueArray( 1, tumor_radius, tumor_radius**2)) for k, v in curves_by_path_and_name.items(): curves_by_path_and_name[k] = myutils.MeanValueArray.fromSummation( v_.avg for v_ in v) # ---- here goes the plotting -----# charsize = 12 / 90. figscale = 1.8 fig, axes = pyplot.subplots(3, 2, dpi=90, figsize=(7. * figscale, 5. * figscale)) mpl_utils.subplots_adjust_abs(fig, left=6 * charsize, right=-2 * charsize, top=-3. * charsize, bottom=8. * charsize, hspace=8. * charsize, wspace=12 * charsize) axes = axes.ravel() default_colors = 'rgbcmykrgbcmykrgbcmyk' pathorder = resultfiles[0].groupnames labels_by_path = dict((g, 't=%s' % f2s(resultfiles[0].get_group_time(g))) for g in resultfiles[0].groupnames) bins = binspec.arange() bins = 1.e-3 * np.average((bins[1:], bins[:-1]), axis=0) ld = dataman.obtain_data('ld', resultfiles[0].f) rmax = ld.GetWorldSize()[0] * 0.25 * 1.e-3 def plot(ax, name, scalefactor=1., label=None, colors=default_colors, errorbars=True, zero_ylim=True): for i, path in enumerate(pathorder): curve = curves_by_path_and_name[path, name] label = labels_by_path[path] if label else None mask = ~curve.avg.mask if errorbars: mpl_utils.errorbar(ax, bins[mask], scalefactor * curve.avg[mask], yerr=scalefactor * curve.std_mean[mask], label=label, marker=None, color=colors[i], every=2) else: ax.plot(bins[mask], scalefactor * curve.avg[mask], label=label, color=colors[i]) if zero_ylim: _, ymax = ax.get_ylim() ax.set_ylim((0., ymax)) if distance_distribution_name == 'levelset': ax.set(xlim=(-2., 2.)) mpl_utils.add_crosshair(ax, (0., None), ls=':') else: ax.set(xlim=(0., rmax)) for i, path in enumerate(pathorder): mpl_utils.add_crosshair( ax, (curves_by_path_and_name[path, 'approximate_tumor_radius'].avg * 1.e-3, None), ls=':') def fmt_axis_labels(ax, name, scalefactor=None, hidex=True): ax.set( ylabel=(r'$%s$ %s' % (Prettyfier.get_sym(name), Prettyfier.get_bunit(name))) + ((r' $\times\, %s$' % f2l(scalefactor, exponential=True)) if scalefactor else ''), title=Prettyfier.get_label(name)) if hidex: ax.set(xticklabels=[]) else: xsym = r'\phi' if distance_distribution_name == 'levelset' else r'|x|' ax.set(xlabel=r'$%s$ [$mm$]' % xsym) plot(axes[0], 'mvd', label=True, scalefactor=1.e6) fmt_axis_labels(axes[0], 'mvd') axes[0].legend() plot(axes[1], 'phi_vessels', scalefactor=1.) fmt_axis_labels(axes[1], 'phi_vessels', scalefactor=1) plot(axes[2], 'shearforce') fmt_axis_labels( axes[2], 'shearforce', ) plot(axes[3], 'velocity') fmt_axis_labels( axes[3], 'velocity', ) plot(axes[4], 'radius') fmt_axis_labels(axes[4], 'radius', hidex=False) plot(axes[5], 'flow', scalefactor=1) fmt_axis_labels(axes[5], 'flow', scalefactor=1, hidex=False) #plot(axes[5], 'maturation', scalefactor = 1) #fmt_axis_labels(axes[5], 'maturation', scalefactor = 1, hidex=False) pdfwriter.savefig(fig, postfix='_radial')
linewidth=2.) # full o2, tumor q = mydata(theta=1.) plot.plot(args['ncells'], q, 'r', label=r'$\theta = 1$ (tumor)', linewidth=2.) # varying o2 for o2 in o2values: q = mydata(theta=1., o2=o2) plot.plot(args['ncells'], q, 'r--') plot.text(0.1, mydata(o2=o2, ncells=0.1)[0] + 0.001, r'$O_2 = %s$' % f2s(o2)) # finished plot.legend() levels = [-1. / 48, -1. / 238, 0., 1. / 238, 1. / 48, 1. / 24] levellabels = ['-1/48', '-1/240', '0', '1/240', '1/48', '1/24'] plot.set(yticks=levels, yticklabels=levellabels) pdfpages.savefig(fig) # plot vs o2 fig = pyplot.figure() plot = fig.add_subplot( 111,
from os.path import basename, splitext import h5py import os, sys import numpy as np import extensions # for hdf5 support in np.asarray import krebsutils import myutils import plotBulkTissue2d import plotBulkTissue import matplotlib import matplotlib.pyplot as pyplot import mpl_utils f2l = lambda x: myutils.f2s(x, prec=2, latex=True) def analyzeO2_with_tumor(f): dataman = myutils.DataManager(100, [plotBulkTissue2d.DataTumorTissueSingle()]) resultfile = plotBulkTissue2d.ResultFile(f, dataman) group = resultfile.groupnames[-1] ld = resultfile.obtain_data('ld') print group arterial_reference = 12.