

def read_label(filename, subject=None, color=None):
    "Read FreeSurfer Label file\n\n    Parameters\n    ----------\n    filename : string\n        Path to label file.\n    subject : str | None\n        Name of the subject the data are defined for.\n        It is good practice to set this attribute to avoid combining\n        incompatible labels and SourceEstimates (e.g., ones from other\n        subjects). Note that due to file specification limitations, the\n        subject name isn't saved to or loaded from files written to disk.\n    color : None | matplotlib color\n        Default label color and alpha (e.g., ``(1., 0., 0., 1.)`` for red).\n        Note that due to file specification limitations, the color isn't saved\n        to or loaded from files written to disk.\n\n    Returns\n    -------\n    label : Label\n        Instance of Label object with attributes:\n\n            - ``comment``: comment from the first line of the label file\n            - ``vertices``: vertex indices (0 based, column 1)\n            - ``pos``: locations in meters (columns 2 - 4 divided by 1000)\n            - ``values``: values at the vertices (column 5)\n\n    See Also\n    --------\n    read_labels_from_annot\n    "
    if ((subject is not None) and (not isinstance(subject, string_types))):
        raise TypeError('subject must be a string')
    basename = op.basename(filename)
    if (basename.endswith('lh.label') or basename.startswith('lh.')):
        hemi = 'lh'
    elif (basename.endswith('rh.label') or basename.startswith('rh.')):
        hemi = 'rh'
    else:
        raise ValueError('Cannot find which hemisphere it is. File should end with lh.label or rh.label')
    if basename.startswith(('lh.', 'rh.')):
        basename_ = basename[3:]
        if basename.endswith('.label'):
            basename_ = basename[:(- 6)]
    else:
        basename_ = basename[:(- 9)]
    name = ('%s-%s' % (basename_, hemi))
    with open(filename, 'r') as fid:
        comment = fid.readline().replace('\n', '')[1:]
        nv = int(fid.readline())
        data = np.empty((5, nv))
        for (i, line) in enumerate(fid):
            data[:, i] = line.split()
    vertices = np.array(data[0], dtype=np.int32)
    pos = (0.001 * data[1:4].T)
    values = data[4]
    order = np.argsort(vertices)
    vertices = vertices[order]
    pos = pos[order]
    values = values[order]
    label = Label(vertices, pos, values, hemi, comment, name, filename, subject, color)
    return label

dataset/ETHPy150Open mne-tools/mne-python/mne/label.py read_label/original