def find_basal_edge(monolayer, apical_edge):
    """Returns the basal edge parallel to the apical edge passed
    in argument.

    Parameters
    ----------
    monolayer: a :class:`Monolayer` instance

    """
    srce, trgt, cell = monolayer.edge_df.loc[apical_edge, ['srce', 'trgt',
        'cell']]
    cell_edges = monolayer.edge_df[monolayer.edge_df['cell'] == cell]
    srce_segment = monolayer.vert_df.loc[cell_edges['srce'].values, 'segment']
    srce_segment.index = cell_edges.index
    trgt_segment = monolayer.vert_df.loc[cell_edges['trgt'].values, 'segment']
    trgt_segment.index = cell_edges.index
    b_trgt, = cell_edges[(srce_segment == 'apical') & (trgt_segment ==
        'basal') & (cell_edges['srce'] == srce)]['trgt']
    b_srce, = cell_edges[(srce_segment == 'basal') & (trgt_segment ==
        'apical') & (cell_edges['trgt'] == trgt)]['srce']
    b_edge, = cell_edges[(cell_edges['srce'] == b_srce) & (cell_edges[
        'trgt'] == b_trgt)].index
    return b_edge
