{"action":"created","comment":{"url":"https://api.github.com/repos/mne-tools/mne-python/pulls/comments/200041851","pull_request_review_id":134276849,"id":200041851,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMDA0MTg1MQ==","diff_hunk":"@@ -0,0 +1,250 @@\n+\"\"\"\n+================================\n+Demonstrate usage of SourceMorph\n+================================\n+\n+This example demonstrates how to morph an individual subject source estimate to\n+a common reference space. It will be demonstrated using the SourceMorp class.\n+The example uses parts of the MNE example\n+:ref:`sphx_glr_auto_examples_inverse_plot_lcmv_beamformer_volume.py` and\n+:ref:`sphx_glr_auto_examples_inverse_plot_mne_dspm_source_localization.py`.\n+The respective result will be morphed based on an affine transformation and a\n+nonlinear morph, estimated based on respective transformation from the\n+subject's anatomical T1 (brain) to fsaverage T1 (brain) in VolSourceEstimate\n+case and using an affine transform in the SourceEstimate or\n+VectorSourceEstimate case. Afterwards the transformation will be applied to the\n+beamformer result. The result will be a plot showing the morphed result\n+overlaying the fsaverage T1. Uncomment at the respective location to plot the\n+result of the surface morph.\n+\n+\"\"\"\n+# Author: Tommy Clausner <tommy.clausner@gmail.com>\n+#\n+# License: BSD (3-clause)\n+\n+import matplotlib.pylab as plt\n+import mne\n+import nibabel  as nib\n+import numpy as np\n+from mne import SourceMorph\n+from mne.beamformer import make_lcmv, apply_lcmv\n+from mne.minimum_norm import make_inverse_operator, apply_inverse\n+from nilearn.plotting import plot_anat\n+\n+print(__doc__)\n+\n+\n+###############################################################################\n+# from :ref:`sphx_glr_auto_examples_inverse_plot_mne_dspm_source_localization.py`.\n+# Note, that in order to save the data fname needs to be set\n+def compute_lcmv_example_data_surf(data_path, fname=None):\n+    raw_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif'\n+\n+    raw = mne.io.read_raw_fif(raw_fname)  # already has an average reference\n+    events = mne.find_events(raw, stim_channel='STI 014')\n+\n+    event_id = dict(aud_r=1)  # event trigger and conditions\n+    tmin = -0.2  # start of each epoch (200ms before the trigger)\n+    tmax = 0.2  # end of each epoch (500ms after the trigger)\n+    raw.info['bads'] = ['MEG 2443', 'EEG 053']\n+    picks = mne.pick_types(raw.info, meg=True, eeg=False, eog=True,\n+                           exclude='bads')\n+    baseline = (None, 0)  # means from the first instant to t = 0\n+    reject = dict(grad=4000e-13, mag=4e-12, eog=150e-6)\n+\n+    epochs = mne.Epochs(raw, events, event_id, tmin, tmax, proj=True,\n+                        picks=picks,\n+                        baseline=baseline, reject=reject)\n+    noise_cov = mne.compute_covariance(\n+        epochs, tmax=0., method=['shrunk', 'empirical'], verbose=True)\n+\n+    evoked = epochs.average().pick_types(meg=True)\n+\n+    del epochs  # to save memory\n+\n+    # Read the forward solution and compute the inverse operator\n+    fname_fwd = data_path + '/MEG/sample/sample_audvis-meg-oct-6-fwd.fif'\n+    fwd = mne.read_forward_solution(fname_fwd)\n+\n+    # make an MEG inverse operator\n+    info = evoked.info\n+    inverse_operator = make_inverse_operator(info, fwd, noise_cov,\n+                                             loose=0.2, depth=0.8)\n+\n+    method = \"dSPM\"\n+    snr = 3.\n+    lambda2 = 1. / snr ** 2\n+    stc = apply_inverse(evoked, inverse_operator, lambda2,\n+                        method=method, pick_ori=None)\n+    if fname is not None:\n+        stc.save(fname)\n+\n+    return stc\n+\n+\n+###############################################################################\n+# from :ref:`sphx_glr_auto_examples_inverse_plot_lcmv_beamformer_volume.py`.\n+# Note, that in order to save the data fname needs to be set\n+def compute_lcmv_example_data_vol(data_path, fname=None):\n+    raw_fname = data_path + '/MEG/sample/sample_audvis_raw.fif'\n+    event_fname = data_path + '/MEG/sample/sample_audvis_raw-eve.fif'\n+    fname_fwd = data_path + '/MEG/sample/sample_audvis-meg-vol-7-fwd.fif'\n+    # Get epochs\n+    event_id, tmin, tmax = [1, 2], -0.2, 0.2\n+\n+    # Setup for reading the raw data\n+    raw = mne.io.read_raw_fif(raw_fname, preload=True)\n+    raw.info['bads'] = ['MEG 2443', 'EEG 053']  # 2 bad channels\n+    events = mne.read_events(event_fname)\n+\n+    # Set up pick list: gradiometers and magnetometers, excluding bad channels\n+    picks = mne.pick_types(raw.info, meg=True, eeg=False, stim=True, eog=True,\n+                           exclude='bads')\n+\n+    # Pick the channels of interest\n+    raw.pick_channels([raw.ch_names[pick] for pick in picks])\n+\n+    # Re-normalize our empty-room projectors, so they are fine after\n+    # subselection\n+    raw.info.normalize_proj()\n+    # Read epochs\n+    proj = False  # already applied\n+    epochs = mne.Epochs(raw, events, event_id, tmin, tmax,\n+                        baseline=(None, 0), preload=True, proj=proj,\n+                        reject=dict(grad=4000e-13, mag=4e-12, eog=150e-6))\n+    evoked = epochs.average()\n+\n+    # Read regularized noise covariance and compute regularized data covariance\n+    noise_cov = mne.compute_covariance(epochs, tmin=tmin, tmax=0,\n+                                       method='shrunk')\n+    data_cov = mne.compute_covariance(epochs, tmin=0.04, tmax=0.15,\n+                                      method='shrunk')\n+    # Read forward model\n+    forward = mne.read_forward_solution(fname_fwd)\n+\n+    # Compute weights of free orientation (vector) beamformer with weight\n+    # normalization (neural activity index, NAI). Providing a noise covariance\n+    # matrix enables whitening of the data and forward solution. Source\n+    # orientation is optimized by setting pick_ori to 'max-power'.\n+    # weight_norm can also be set to 'unit-noise-gain'. Source orientation can\n+    # also be 'normal' (but only when using a surface-based source space) or\n+    # None, which computes a vector beamfomer. Note, however, that not all\n+    # combinations of orientation selection and weight normalization are\n+    # implemented yet.\n+    filters = make_lcmv(evoked.info, forward, data_cov, reg=0.05,\n+                        noise_cov=noise_cov, pick_ori='max-power',\n+                        weight_norm='nai')\n+\n+    # Apply this spatial filter to the evoked data.\n+    stc = apply_lcmv(evoked, filters, max_ori_out='signed')\n+\n+    # take absolute values for plotting\n+    stc.data[:, :] = np.abs(stc.data)\n+\n+    # Save result in stc files if desired\n+\n+    # select time window (tmin, tmax) in ms - consider changing for real data\n+    # scenario, since those values were chosen to optimize computation time\n+    stc.crop(0.087, 0.087)\n+\n+    src = forward['src']\n+\n+    if fname is not None:\n+        stc.save(fname)\n+\n+    return stc, src\n+\n+\n+# Setup path\n+data_path = mne.datasets.sample.data_path()\n+t1_sample = data_path + '/subjects/sample/mri/brain.mgz'\n+t1_fsaverage = data_path + '/subjects/fsaverage/mri/brain.mgz'\n+fname_fwd = data_path + '/MEG/sample/sample_audvis-meg-vol-7-fwd.fif'\n+subjects_dir = data_path + '/subjects'\n+\n+# read precomputed data\n+compute_lcmv_example_data_surf(data_path, fname='lcmv-surf')\n+compute_lcmv_example_data_vol(data_path, fname='lcmv-vol')\n+\n+src = mne.read_forward_solution(fname_fwd)['src']\n+stc = mne.read_source_estimate('lcmv-vol-vl.stc')\n+stc_rh = mne.read_source_estimate('lcmv-surf-rh.stc')\n+\n+###############################################################################\n+# Morph VolSourceEstimate\n+\n+# initialize morpher for VolSourceEstimate (src=src)\n+morpher = SourceMorph('sample',\n+                      'fsaverage',\n+                      src=src,\n+                      subjects_dir=subjects_dir,\n+                      grid_spacing=(5., 5., 5.))\n+\n+# save morph\n+morpher.save('vol')\n+\n+# load morph by initializing with file name\n+morpher_loaded = SourceMorph(None, None, fname='vol-morph.h5')\n+\n+# morph data\n+stc_morphed = morpher_loaded(stc)\n+\n+###############################################################################\n+# Morph SourceEstimate\n+\n+fs_vertices = [np.arange(10242)] * 2\n+\n+# initialize morpher for SourceEstimate (src='surf')\n+morpher_rh_surf = SourceMorph('sample', 'fsaverage',","path":"examples/inverse/plot_use_sourcemorph.py","position":198,"original_position":198,"commit_id":"460a0fb547c512563cb0460ddaa52a703afcbbdd","original_commit_id":"460a0fb547c512563cb0460ddaa52a703afcbbdd","user":{"login":"TommyClausner","id":33838917,"node_id":"MDQ6VXNlcjMzODM4OTE3","avatar_url":"https://avatars3.githubusercontent.com/u/33838917?v=4","gravatar_id":"","url":"https://api.github.com/users/TommyClausner","html_url":"https://github.com/TommyClausner","followers_url":"https://api.github.com/users/TommyClausner/followers","following_url":"https://api.github.com/users/TommyClausner/following{/other_user}","gists_url":"https://api.github.com/users/TommyClausner/gists{/gist_id}","starred_url":"https://api.github.com/users/TommyClausner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TommyClausner/subscriptions","organizations_url":"https://api.github.com/users/TommyClausner/orgs","repos_url":"https://api.github.com/users/TommyClausner/repos","events_url":"https://api.github.com/users/TommyClausner/events{/privacy}","received_events_url":"https://api.github.com/users/TommyClausner/received_events","type":"User","site_admin":false},"body":"oh sorry my mistake. I don't anyway - was just a typo... ;)","created_at":"2018-07-04T08:10:31Z","updated_at":"2018-07-04T08:10:31Z","html_url":"https://github.com/mne-tools/mne-python/pull/5307#discussion_r200041851","pull_request_url":"https://api.github.com/repos/mne-tools/mne-python/pulls/5307","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/comments/200041851"},"html":{"href":"https://github.com/mne-tools/mne-python/pull/5307#discussion_r200041851"},"pull_request":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/5307"}},"in_reply_to_id":199737031},"pull_request":{"url":"https://api.github.com/repos/mne-tools/mne-python/pulls/5307","id":198391684,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk4MzkxNjg0","html_url":"https://github.com/mne-tools/mne-python/pull/5307","diff_url":"https://github.com/mne-tools/mne-python/pull/5307.diff","patch_url":"https://github.com/mne-tools/mne-python/pull/5307.patch","issue_url":"https://api.github.com/repos/mne-tools/mne-python/issues/5307","number":5307,"state":"open","locked":false,"title":"[WIP] introducing the SourceMorph class (GSoC)","user":{"login":"TommyClausner","id":33838917,"node_id":"MDQ6VXNlcjMzODM4OTE3","avatar_url":"https://avatars3.githubusercontent.com/u/33838917?v=4","gravatar_id":"","url":"https://api.github.com/users/TommyClausner","html_url":"https://github.com/TommyClausner","followers_url":"https://api.github.com/users/TommyClausner/followers","following_url":"https://api.github.com/users/TommyClausner/following{/other_user}","gists_url":"https://api.github.com/users/TommyClausner/gists{/gist_id}","starred_url":"https://api.github.com/users/TommyClausner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TommyClausner/subscriptions","organizations_url":"https://api.github.com/users/TommyClausner/orgs","repos_url":"https://api.github.com/users/TommyClausner/repos","events_url":"https://api.github.com/users/TommyClausner/events{/privacy}","received_events_url":"https://api.github.com/users/TommyClausner/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-06-29T18:29:05Z","updated_at":"2018-07-04T08:10:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d02d56c63e8e8da34a3334e10c6e16ef6cd95750","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/mne-tools/mne-python/pulls/5307/commits","review_comments_url":"https://api.github.com/repos/mne-tools/mne-python/pulls/5307/comments","review_comment_url":"https://api.github.com/repos/mne-tools/mne-python/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mne-tools/mne-python/issues/5307/comments","statuses_url":"https://api.github.com/repos/mne-tools/mne-python/statuses/460a0fb547c512563cb0460ddaa52a703afcbbdd","head":{"label":"TommyClausner:master","ref":"master","sha":"460a0fb547c512563cb0460ddaa52a703afcbbdd","user":{"login":"TommyClausner","id":33838917,"node_id":"MDQ6VXNlcjMzODM4OTE3","avatar_url":"https://avatars3.githubusercontent.com/u/33838917?v=4","gravatar_id":"","url":"https://api.github.com/users/TommyClausner","html_url":"https://github.com/TommyClausner","followers_url":"https://api.github.com/users/TommyClausner/followers","following_url":"https://api.github.com/users/TommyClausner/following{/other_user}","gists_url":"https://api.github.com/users/TommyClausner/gists{/gist_id}","starred_url":"https://api.github.com/users/TommyClausner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TommyClausner/subscriptions","organizations_url":"https://api.github.com/users/TommyClausner/orgs","repos_url":"https://api.github.com/users/TommyClausner/repos","events_url":"https://api.github.com/users/TommyClausner/events{/privacy}","received_events_url":"https://api.github.com/users/TommyClausner/received_events","type":"User","site_admin":false},"repo":{"id":139026270,"node_id":"MDEwOlJlcG9zaXRvcnkxMzkwMjYyNzA=","name":"mne-python","full_name":"TommyClausner/mne-python","owner":{"login":"TommyClausner","id":33838917,"node_id":"MDQ6VXNlcjMzODM4OTE3","avatar_url":"https://avatars3.githubusercontent.com/u/33838917?v=4","gravatar_id":"","url":"https://api.github.com/users/TommyClausner","html_url":"https://github.com/TommyClausner","followers_url":"https://api.github.com/users/TommyClausner/followers","following_url":"https://api.github.com/users/TommyClausner/following{/other_user}","gists_url":"https://api.github.com/users/TommyClausner/gists{/gist_id}","starred_url":"https://api.github.com/users/TommyClausner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TommyClausner/subscriptions","organizations_url":"https://api.github.com/users/TommyClausner/orgs","repos_url":"https://api.github.com/users/TommyClausner/repos","events_url":"https://api.github.com/users/TommyClausner/events{/privacy}","received_events_url":"https://api.github.com/users/TommyClausner/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/TommyClausner/mne-python","description":"MNE : Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python","fork":true,"url":"https://api.github.com/repos/TommyClausner/mne-python","forks_url":"https://api.github.com/repos/TommyClausner/mne-python/forks","keys_url":"https://api.github.com/repos/TommyClausner/mne-python/keys{/key_id}","collaborators_url":"https://api.github.com/repos/TommyClausner/mne-python/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/TommyClausner/mne-python/teams","hooks_url":"https://api.github.com/repos/TommyClausner/mne-python/hooks","issue_events_url":"https://api.github.com/repos/TommyClausner/mne-python/issues/events{/number}","events_url":"https://api.github.com/repos/TommyClausner/mne-python/events","assignees_url":"https://api.github.com/repos/TommyClausner/mne-python/assignees{/user}","branches_url":"https://api.github.com/repos/TommyClausner/mne-python/branches{/branch}","tags_url":"https://api.github.com/repos/TommyClausner/mne-python/tags","blobs_url":"https://api.github.com/repos/TommyClausner/mne-python/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/TommyClausner/mne-python/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/TommyClausner/mne-python/git/refs{/sha}","trees_url":"https://api.github.com/repos/TommyClausner/mne-python/git/trees{/sha}","statuses_url":"https://api.github.com/repos/TommyClausner/mne-python/statuses/{sha}","languages_url":"https://api.github.com/repos/TommyClausner/mne-python/languages","stargazers_url":"https://api.github.com/repos/TommyClausner/mne-python/stargazers","contributors_url":"https://api.github.com/repos/TommyClausner/mne-python/contributors","subscribers_url":"https://api.github.com/repos/TommyClausner/mne-python/subscribers","subscription_url":"https://api.github.com/repos/TommyClausner/mne-python/subscription","commits_url":"https://api.github.com/repos/TommyClausner/mne-python/commits{/sha}","git_commits_url":"https://api.github.com/repos/TommyClausner/mne-python/git/commits{/sha}","comments_url":"https://api.github.com/repos/TommyClausner/mne-python/comments{/number}","issue_comment_url":"https://api.github.com/repos/TommyClausner/mne-python/issues/comments{/number}","contents_url":"https://api.github.com/repos/TommyClausner/mne-python/contents/{+path}","compare_url":"https://api.github.com/repos/TommyClausner/mne-python/compare/{base}...{head}","merges_url":"https://api.github.com/repos/TommyClausner/mne-python/merges","archive_url":"https://api.github.com/repos/TommyClausner/mne-python/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/TommyClausner/mne-python/downloads","issues_url":"https://api.github.com/repos/TommyClausner/mne-python/issues{/number}","pulls_url":"https://api.github.com/repos/TommyClausner/mne-python/pulls{/number}","milestones_url":"https://api.github.com/repos/TommyClausner/mne-python/milestones{/number}","notifications_url":"https://api.github.com/repos/TommyClausner/mne-python/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/TommyClausner/mne-python/labels{/name}","releases_url":"https://api.github.com/repos/TommyClausner/mne-python/releases{/id}","deployments_url":"https://api.github.com/repos/TommyClausner/mne-python/deployments","created_at":"2018-06-28T14:02:52Z","updated_at":"2018-06-29T18:48:12Z","pushed_at":"2018-06-29T18:48:10Z","git_url":"git://github.com/TommyClausner/mne-python.git","ssh_url":"git@github.com:TommyClausner/mne-python.git","clone_url":"https://github.com/TommyClausner/mne-python.git","svn_url":"https://github.com/TommyClausner/mne-python","homepage":"http://martinos.org/mne/","size":100462,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mne-tools:master","ref":"master","sha":"8812f9309ce2e9b345461684c7a8c190db111cc2","user":{"login":"mne-tools","id":583875,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU4Mzg3NQ==","avatar_url":"https://avatars3.githubusercontent.com/u/583875?v=4","gravatar_id":"","url":"https://api.github.com/users/mne-tools","html_url":"https://github.com/mne-tools","followers_url":"https://api.github.com/users/mne-tools/followers","following_url":"https://api.github.com/users/mne-tools/following{/other_user}","gists_url":"https://api.github.com/users/mne-tools/gists{/gist_id}","starred_url":"https://api.github.com/users/mne-tools/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mne-tools/subscriptions","organizations_url":"https://api.github.com/users/mne-tools/orgs","repos_url":"https://api.github.com/users/mne-tools/repos","events_url":"https://api.github.com/users/mne-tools/events{/privacy}","received_events_url":"https://api.github.com/users/mne-tools/received_events","type":"Organization","site_admin":false},"repo":{"id":1301584,"node_id":"MDEwOlJlcG9zaXRvcnkxMzAxNTg0","name":"mne-python","full_name":"mne-tools/mne-python","owner":{"login":"mne-tools","id":583875,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU4Mzg3NQ==","avatar_url":"https://avatars3.githubusercontent.com/u/583875?v=4","gravatar_id":"","url":"https://api.github.com/users/mne-tools","html_url":"https://github.com/mne-tools","followers_url":"https://api.github.com/users/mne-tools/followers","following_url":"https://api.github.com/users/mne-tools/following{/other_user}","gists_url":"https://api.github.com/users/mne-tools/gists{/gist_id}","starred_url":"https://api.github.com/users/mne-tools/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mne-tools/subscriptions","organizations_url":"https://api.github.com/users/mne-tools/orgs","repos_url":"https://api.github.com/users/mne-tools/repos","events_url":"https://api.github.com/users/mne-tools/events{/privacy}","received_events_url":"https://api.github.com/users/mne-tools/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mne-tools/mne-python","description":"MNE : Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python","fork":false,"url":"https://api.github.com/repos/mne-tools/mne-python","forks_url":"https://api.github.com/repos/mne-tools/mne-python/forks","keys_url":"https://api.github.com/repos/mne-tools/mne-python/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mne-tools/mne-python/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mne-tools/mne-python/teams","hooks_url":"https://api.github.com/repos/mne-tools/mne-python/hooks","issue_events_url":"https://api.github.com/repos/mne-tools/mne-python/issues/events{/number}","events_url":"https://api.github.com/repos/mne-tools/mne-python/events","assignees_url":"https://api.github.com/repos/mne-tools/mne-python/assignees{/user}","branches_url":"https://api.github.com/repos/mne-tools/mne-python/branches{/branch}","tags_url":"https://api.github.com/repos/mne-tools/mne-python/tags","blobs_url":"https://api.github.com/repos/mne-tools/mne-python/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mne-tools/mne-python/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mne-tools/mne-python/git/refs{/sha}","trees_url":"https://api.github.com/repos/mne-tools/mne-python/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mne-tools/mne-python/statuses/{sha}","languages_url":"https://api.github.com/repos/mne-tools/mne-python/languages","stargazers_url":"https://api.github.com/repos/mne-tools/mne-python/stargazers","contributors_url":"https://api.github.com/repos/mne-tools/mne-python/contributors","subscribers_url":"https://api.github.com/repos/mne-tools/mne-python/subscribers","subscription_url":"https://api.github.com/repos/mne-tools/mne-python/subscription","commits_url":"https://api.github.com/repos/mne-tools/mne-python/commits{/sha}","git_commits_url":"https://api.github.com/repos/mne-tools/mne-python/git/commits{/sha}","comments_url":"https://api.github.com/repos/mne-tools/mne-python/comments{/number}","issue_comment_url":"https://api.github.com/repos/mne-tools/mne-python/issues/comments{/number}","contents_url":"https://api.github.com/repos/mne-tools/mne-python/contents/{+path}","compare_url":"https://api.github.com/repos/mne-tools/mne-python/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mne-tools/mne-python/merges","archive_url":"https://api.github.com/repos/mne-tools/mne-python/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mne-tools/mne-python/downloads","issues_url":"https://api.github.com/repos/mne-tools/mne-python/issues{/number}","pulls_url":"https://api.github.com/repos/mne-tools/mne-python/pulls{/number}","milestones_url":"https://api.github.com/repos/mne-tools/mne-python/milestones{/number}","notifications_url":"https://api.github.com/repos/mne-tools/mne-python/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mne-tools/mne-python/labels{/name}","releases_url":"https://api.github.com/repos/mne-tools/mne-python/releases{/id}","deployments_url":"https://api.github.com/repos/mne-tools/mne-python/deployments","created_at":"2011-01-28T03:31:13Z","updated_at":"2018-07-04T03:00:18Z","pushed_at":"2018-07-03T21:12:59Z","git_url":"git://github.com/mne-tools/mne-python.git","ssh_url":"git@github.com:mne-tools/mne-python.git","clone_url":"https://github.com/mne-tools/mne-python.git","svn_url":"https://github.com/mne-tools/mne-python","homepage":"http://martinos.org/mne/","size":100448,"stargazers_count":496,"watchers_count":496,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":419,"mirror_url":null,"archived":false,"open_issues_count":254,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":419,"open_issues":254,"watchers":496,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/5307"},"html":{"href":"https://github.com/mne-tools/mne-python/pull/5307"},"issue":{"href":"https://api.github.com/repos/mne-tools/mne-python/issues/5307"},"comments":{"href":"https://api.github.com/repos/mne-tools/mne-python/issues/5307/comments"},"review_comments":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/5307/comments"},"review_comment":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/5307/commits"},"statuses":{"href":"https://api.github.com/repos/mne-tools/mne-python/statuses/460a0fb547c512563cb0460ddaa52a703afcbbdd"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"TommyClausner"}}