def raveler_body_annotations(orphans, non_traversing=None):
    """Return a Raveler body annotation dictionary of orphan segments.

    Orphans are labeled as body annotations with `not sure` status and
    a string indicating `orphan` in the comments field.

    Non-traversing segments have only one contact with the surface of
    the volume, and are labeled `does not traverse` in the comments.

    Parameters
    ----------
    orphans : iterable of int
        The ID numbers corresponding to orphan segments.
    non_traversing : iterable of int (optional, default None)
        The ID numbers of segments having only one exit point in the volume.

    Returns
    -------
    body_annotations : dict
        A dictionary containing entries for 'data' and 'metadata' as
        specified in the Raveler body annotations format [1, 2].

    References
    ----------
    [1] https://wiki.janelia.org/wiki/display/flyem/body+annotation+file+format
    and:
    [2] https://wiki.janelia.org/wiki/display/flyem/generic+file+format
    """
    data = [{'status': 'not sure', 'comment': 'orphan', 'body ID': int(o)}
        for o in orphans]
    if non_traversing is not None:
        data.extend([{'status': 'not sure', 'comment': 'does not traverse',
            'body ID': int(n)} for n in non_traversing])
    metadata = {'description': 'body annotations', 'file version': 2}
    return {'data': data, 'metadata': metadata}