def virtual_residue_atoms(bg, s, i, strand=0):
    """
    Return the atoms for the virtual residue.

    :param bg: The BulgeGraph
    :param s: The stem
    :param i: The virtual residue number
    :param strand: The strand for which to get the virtual atoms
    """
    """
    if vpos == None or vvec == None:
        (vpos, vvec, vvec_l, vvec_r) = virtual_res_3d_pos(bg, s, i)
    if basis == None:
        basis = virtual_res_basis(bg, s, i, vvec).transpose()
    """
    if s[0] != 's':
        raise ValueError(
            'Expected stem (not single-stranded RNA element), got {}'.format(s)
            )
    glob_pos = bg.defines[s][0] + i, bg.defines[s][3] - i
    glob_pos = glob_pos[strand]
    return bg.virtual_atoms(glob_pos)
