jupyter.py 文件源码

python
阅读 39 收藏 0 点赞 0 评论 0

项目:nanslice 作者: spinicist 项目源码 文件源码
def interactive(img, cmap='gray', window=(2, 98)):
    import ipywidgets as ipy

    # Get some information about the image
    bbox = Box.fromMask(img)
    window_vals = np.nanpercentile(img.get_data(), window)
    # Setup figure
    fig, axes = plt.subplots(1, 3, figsize=(8, 4))
    implots = [None, None, None]
    for i in range(3):
        sl = Slice(bbox, bbox.center, i, 256, orient='clin')
        sl_img = sl.sample(img, order=0)
        sl_color = colorize(sl_img, cmap, window_vals)
        implots[i] = axes[i].imshow(sl_color, origin='lower', extent=sl.extent, cmap=cmap, vmin = 0.1)
        axes[i].axis('off')

    def wrap_sections(x, y, z):
        for i in range(3):
            sl = Slice(bbox, np.array((x, y, z)), i, 256, orient='clin')
            sl_img = sl.sample(img, order=0)
            sl_color = colorize(sl_img, cmap, window_vals)
            implots[i].set_data(sl_color)
            plt.show()

    # Setup widgets
    slider_x = ipy.FloatSlider(min=bbox.start[0], max=bbox.end[0], value=bbox.center[0])
    slider_y = ipy.FloatSlider(min=bbox.start[1], max=bbox.end[1], value=bbox.center[1])
    slider_z = ipy.FloatSlider(min=bbox.start[2], max=bbox.end[2], value=bbox.center[2])
    widgets = ipy.interactive(wrap_sections, x=slider_x, y=slider_y, z=slider_z)

    # Now do some manual layout
    hbox = ipy.HBox(widgets.children[0:3]) # Set the sliders to horizontal layout
    vbox = ipy.VBox((hbox, widgets.children[3]))
    # iplot.widget.children[-1].layout.height = '350px'
    return vbox
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号