Repository: mne-tools/mne-python

Issue:
bug brain.add_label when hemi='split'
trying this 

```
brain = stc.plot(subject='sample', time_viewer=True, hemi='split', views=['lat', 'med'])
brain.add_label('~/mne_data/MNE-sample-data/subjects/sample/label/lh.BA1.label')
```

I get a non meaningful error. It should work though as I know it's a left hemi label so it should be added only to left hemi.

cc @GuillaumeFavelier 


Discussion:
I think this is just not supported yet, looking at the doc of `add_label()`:

```
        hemi : str | None
            If None, it is assumed to belong to the hemipshere being
            shown. If two hemispheres are being shown, an error will
            be thrown.
```

We could work to integrate it into `_Brain` though :+1: 

> I know it's a left hemi label 

Can we programmatically get this information?
with read_label you get a label that should have an hemi attribute
https://github.com/mne-tools/mne-python/blob/master/mne/label.py#L233 to
tell you

>

This is great! I'll work on something then
Meanwhile could you tell me if the following works for you?

```py
    brain = stc.plot(subject='sample', hemi='split', views=['lat', 'med'])
    label = read_label('~/mne_data/MNE-sample-data/subjects/sample/label/lh.BA1.label')
    brain.add_label(label)
```

Resolving patch:
diff --git a/mne/viz/_brain/_brain.py b/mne/viz/_brain/_brain.py
--- a/mne/viz/_brain/_brain.py
+++ b/mne/viz/_brain/_brain.py
@@ -498,8 +498,7 @@ def add_label(self, label, color=None, alpha=1, scalar_thresh=None,
             as part of the border definition.
         hemi : str | None
             If None, it is assumed to belong to the hemipshere being
-            shown. If two hemispheres are being shown, an error will
-            be thrown.
+            shown.
         subdir : None | str
             If a label is specified as name, subdir can be used to indicate
             that the label file is in a sub-directory of the subject's
@@ -513,14 +512,16 @@ def add_label(self, label, color=None, alpha=1, scalar_thresh=None,
         """
         from matplotlib.colors import colorConverter
         if isinstance(label, str):
-            hemi = self._check_hemi(hemi)
             if color is None:
                 color = "crimson"
 
             if os.path.isfile(label):
                 filepath = label
+                label = read_label(filepath)
+                hemi = label.hemi
                 label_name = os.path.basename(filepath).split('.')[1]
             else:
+                hemi = self._check_hemi(hemi)
                 label_name = label
                 label_fname = ".".join([hemi, label_name, 'label'])
                 if subdir is None:
@@ -532,7 +533,7 @@ def add_label(self, label, color=None, alpha=1, scalar_thresh=None,
                 if not os.path.exists(filepath):
                     raise ValueError('Label file %s does not exist'
                                      % filepath)
-            label = read_label(filepath)
+                label = read_label(filepath)
             ids = label.vertices
             scalars = label.values
         else:


Test patch:
diff --git a/mne/viz/_brain/tests/test_brain.py b/mne/viz/_brain/tests/test_brain.py
--- a/mne/viz/_brain/tests/test_brain.py
+++ b/mne/viz/_brain/tests/test_brain.py
@@ -108,10 +108,14 @@ def test_brain_add_label(renderer):
     brain = _Brain(subject_id, hemi='lh', size=500,
                    surf=surf, subjects_dir=subjects_dir)
     label = read_label(fname_label)
-    brain.add_label(fname_label)
     brain.add_label(label, scalar_thresh=0.)
     brain.close()
 
+    brain = _Brain(subject_id, hemi='split', size=500,
+                   surf=surf, subjects_dir=subjects_dir)
+    brain.add_label(fname_label)
+    brain.close()
+
 
 @testing.requires_testing_data
 def test_brain_add_foci(renderer):