コード例 #1
0
def plot_births_and_deaths(config, dataset, keys=None):
    if keys is None:
        keys = dataset.trajecs.keys()

    def make_plot(ax, births, deaths, keys, axis="yz"):

        if axis == "yz":
            x_births = births[:, [1]]
            y_births = births[:, [2]]
            x_deaths = deaths[:, [1]]
            y_deaths = deaths[:, [2]]

        if axis == "xy":
            x_births = births[:, [0]]
            y_births = births[:, [1]]
            x_deaths = deaths[:, [0]]
            y_deaths = deaths[:, [1]]

        if axis == "xz":
            x_births = births[:, [0]]
            y_births = births[:, [2]]
            x_deaths = deaths[:, [0]]
            y_deaths = deaths[:, [2]]

        fpl.scatter(
            ax, x_births.flatten(), y_births.flatten(), color="green", radius=0.005, alpha=1, use_ellipses=False
        )
        fpl.scatter(ax, x_deaths.flatten(), y_deaths.flatten(), color="red", radius=0.005, alpha=1, use_ellipses=False)

    def collect_births_and_deaths(keys):
        births = []
        deaths = []
        for key in keys:
            trajec = dataset.trajecs[key]
            births.append(trajec.positions[0])
            deaths.append(trajec.positions[-1])
        return np.array(births), np.array(deaths)

    births, deaths = collect_births_and_deaths(keys)

    fig = plt.figure(figsize=(8, 4))
    axes = xyz_axis_grid.get_axes(config, fig, figure_padding=[0.15, 0.15, 0.15, 0.15], subplot_padding=0.01)
    fig = axes["xy"].figure

    make_plot(axes["xy"], births, deaths, keys, axis="xy")
    make_plot(axes["xz"], births, deaths, keys, axis="xz")
    make_plot(axes["yz"], births, deaths, keys, axis="yz")

    xyz_axis_grid.set_spines(config, axes, spines=True)

    name = "births_and_deaths.pdf"
    path = os.path.join(config.path, FIGURE_PATH)
    filename = os.path.join(path, name)
    fig.savefig(filename, format="pdf")
コード例 #2
0
def plot_heatmaps(config, dataset, keys=None, zslice="all", xz_axis_z_velocity_range=[-100, 100]):
    if keys is None:
        keys = dataset.trajecs.keys()

    def make_plot(ax, keys, axis="yz"):
        n_frames = 0
        for key in keys:
            trajec = dataset.trajecs[key]
            n_frames += trajec.length

        binres = 0.003
        binsx = np.linspace(config.xlim[0], config.xlim[1], int((config.xlim[1] - config.xlim[0]) / binres))
        binsy = np.linspace(config.ylim[0], config.ylim[1], int((config.ylim[1] - config.ylim[0]) / binres))
        binsz = np.linspace(config.zlim[0], config.zlim[1], int((config.zlim[1] - config.zlim[0]) / binres))

        if axis == "xy":
            depth = config.zlim[1] - config.zlim[0]
        elif axis == "yz":
            depth = config.xlim[1] - config.xlim[0]
        elif axis == "xz":
            depth = config.ylim[1] - config.ylim[0]
        colornorm = [0, 0.0003 * n_frames * depth]
        colormap = "hot"
        print n_frames

        depth_range = [-2, 2]

        # get rid of errant walking flies
        if axis == "xz":
            velocity_range = xz_axis_z_velocity_range
        else:
            velocity_range = [-100, 100]

        img = fap.heatmap(
            ax,
            dataset,
            axis=axis,
            keys=keys,
            xticks=config.ticks["x"],
            yticks=config.ticks["y"],
            zticks=config.ticks["z"],
            rticks=config.ticks["r"],
            colornorm=colornorm,
            normalize_for_speed=False,
            bins=[binsx, binsy, binsz],
            depth_range=depth_range,
            colormap=colormap,
            return_img=False,
            velocity_range=velocity_range,
        )

    fig = plt.figure(figsize=(8, 5))
    axes = xyz_axis_grid.get_axes(config, fig, figure_padding=[0.15, 0.15, 0.15, 0.15], subplot_padding=0.01)
    fig = axes["xy"].figure

    make_plot(axes["xy"], keys, axis="xy")
    make_plot(axes["xz"], keys, axis="xz")
    make_plot(axes["yz"], keys, axis="yz")

    xyz_axis_grid.set_spines(config, axes, spines=True)

    name = "diagnostic_heatmaps.pdf"
    path = os.path.join(config.path, FIGURE_PATH)
    filename = os.path.join(path, name)
    fig.savefig(filename, format="pdf")