def make_optic_canula_cylinder(
    atlas,
    root,
    target_region=None,
    pos=None,
    offsets=(0, 0, -500),
    hemisphere="right",
    color="powderblue",
    radius=350,
    alpha=0.5,
    **kwargs,
):

    """
        Creates a cylindrical vedo actor to scene to render optic cannulas. By default
        this is a semi-transparent blue cylinder centered on the center of mass of
        a specified target region and oriented vertically.

        :param target_region: str, acronym of target region to extract coordinates
            of implanted fiber. By defualt the fiber will be centered on the center
            of mass of the target region but the offset arguments can be used to
            fine tune the position. Alternative pass a 'pos' argument with AP-DV-ML coords.
        :param pos: list or tuple or np.array with X,Y,Z coordinates. Must have length = 3.
        :param x_offset, y_offset, z_offset: int, used to fine tune the coordinates of 
            the implanted cannula.
        :param **kwargs: used to specify which hemisphere the cannula is and parameters
            of the rendered cylinder: color, alpha, rotation axis...
    """

    # Get coordinates of brain-side face of optic cannula
    if target_region is not None:
        pos = atlas.get_region_CenterOfMass(
            target_region, unilateral=True, hemisphere=hemisphere
        )
    elif pos is None:
        print(
            "No 'pos' or 'target_region' arguments were \
                        passed to 'add_optic_cannula', nothing to render"
        )
        return

    # Offset position
    for i, offset in enumerate(offsets):
        pos[i] += offset

    # Get coordinates of upper face
    bounds = root.bounds()
    top = pos.copy()
    top[1] = bounds[2] - 500

    # Create actor
    return dict(pos=[top, pos], c=color, r=radius, alpha=alpha, **kwargs)