コード例 #1
0
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)
コード例 #2
0
 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)
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
def f2s(x):
    return myutils.f2s(x, exponential=False, latex=False)
コード例 #6
0
 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
コード例 #7
0
ファイル: fractaldim.py プロジェクト: gitUmaru/tumorcode
        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)),
                '-',
コード例 #8
0
 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
コード例 #9
0
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
コード例 #10
0
 def printavg(name, data):
     avg, std = np.average(data), np.std(data)
     print '%s = %s +/- %s' % (name, f2s(avg), f2s(std))
コード例 #11
0
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')
コード例 #12
0
                      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,
コード例 #13
0
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.